php array_filter、array_map、array_walk解釈
1、array_filterは、配列内の各要素をコールバック関数で処理します.新しい要素ではなく、ある要素をフィルタリングすることに重点を置いています.要素を処理するとfalseが返されると、この要素はフィルタされます.PS:元のインデックスを保持しました.
2、array_map関数ポテンシャルはarrayよりもwalkは、php内蔵関数のデフォルトが参照ではなく伝達される値であるため、intval()strtolower()などの内蔵関数を使用します.その時walkはどうしようもないarraymapはコールバック関数で配列の各要素を処理し、関数では各要素の値を変更することができ、どのような値が必要なのかに重点を置いて、どのような値を返し、インデックスを維持することができます.複数の配列を一度に処理できます.ただし、配列の数はコールバック関数のパラメータと一致する必要があります.
3、ps:処理された配列が2次元でない場合はarray_mapによる置換処理二次元配列用array_walk_recursive関数は、1次元配列を処理するときに、array_walk関数はパスリファレンスなので、大きな配列を処理するときの効率はarray_よりも高いかもしれません.mapは高いですか?array_walkは、配列内の各要素をコールバック関数で処理し、boolを返します.だから引用伝値に合わせて元の配列を直接変える必要がある.//マニュアルから抜粋したarrayの値のみを変更できます.ユーザーはコールバック関数で配列自体の構造を変更するべきではありません.//たとえば、ユニットの追加/削除、unsetユニットなどです.
$arr = array(1,2,3,'aaa'=>4,5);
$newArr = array_filter($arr,function($val) {
if ($val == 3) {
return false; // false
}
return true; //
});
print_r($newArr);
2、array_map関数ポテンシャルはarrayよりもwalkは、php内蔵関数のデフォルトが参照ではなく伝達される値であるため、intval()strtolower()などの内蔵関数を使用します.その時walkはどうしようもないarraymapはコールバック関数で配列の各要素を処理し、関数では各要素の値を変更することができ、どのような値が必要なのかに重点を置いて、どのような値を返し、インデックスを維持することができます.複数の配列を一度に処理できます.ただし、配列の数はコールバック関数のパラメータと一致する必要があります.
$arr = array(1,2,3,'aaa'=>4,5);
$newArr = array_map(function($val) {
if ($val == 3) {
$val *= $val;
}
return $val; // ,
},$arr);
print_r($newArr);
3、ps:処理された配列が2次元でない場合はarray_mapによる置換処理二次元配列用array_walk_recursive関数は、1次元配列を処理するときに、array_walk関数はパスリファレンスなので、大きな配列を処理するときの効率はarray_よりも高いかもしれません.mapは高いですか?array_walkは、配列内の各要素をコールバック関数で処理し、boolを返します.だから引用伝値に合わせて元の配列を直接変える必要がある.//マニュアルから抜粋したarrayの値のみを変更できます.ユーザーはコールバック関数で配列自体の構造を変更するべきではありません.//たとえば、ユニットの追加/削除、unsetユニットなどです.
$arr = array(1,2,3,'aaa'=>4,5);
array_walk($arr,function(&$val,$key) {
if ($val == 3) {
echo $key.'
';
$val = 33333;
}
});
print_r($arr);