1. ホーム
  2. Web プログラミング
  3. PHP プログラミング
  4. phpのヒント

php array_map vs array_walk ケーススタディ

2022-01-15 18:52:54

array_map()です。

1. array_map() 関数は、配列の各値にユーザ定義関数を適用し、ユーザ定義関数適用後の新しい値を配列に格納して返します。
2. コールバック関数が受け取る引数の数は、array_map()関数に渡される配列の数と同じである必要があります。
3. ヒント:関数に1つ以上の配列を入力することができます。

If the phase function inputs two arrays, the function should also accept two parameters, map to the function to pass the value, is each time from two arrays to take one to pass the function.
The function is passed one at a time. That is, multiple arrays are submitted synchronously, not after submitting an array and then submit the next
If you submit several arrays, the function should also have several arguments

4. 構文: array array_map ( callable callback,array arr1 [, array $...] )

インスタンスです。

<?php 
// single array form
function myfunction($v)
{
    if ($v==="Dog")
    {
        return "Fido";
    }
    return $v;
}

$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));

//multiple arrays
function myfunction1($v1,$v2)
{
    if ($v1===$v2)
    {
        return "same";
    }
    return "different";
}

$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction1",$a1,$a2));
? >

array_walk()です。

1. array_walk - ユーザー定義関数を使用して、配列の各要素に対してコールバックを実行します。
2. 構文: bool array_walk ( array & array,呼び出し可能なfuncname [, mixed $userdata = NULL ] )

パラメータ

 The $array input array.
 The $funcname callback function, typically $funcname accepts two parameters. The value of the $array argument is the first, and the key name is the second.
 $userdata, if supplied with the optional $userdata parameter, is passed to $funcname as the third argument.

If $funcname needs to act directly on values in an array, specify the first argument to funcname as a reference (add the & symbol). This way
Any changes to these cells will also change the original array itself.

戻り値:

Returns TRUE on success, or FALSE on failure.

インスタンスです。

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", " c" => "apple");
// pass a reference, changing the set of parameters passed
function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2<br />\n";
}

echo "Before ... :\n";
// single array
array_walk($fruits, 'test_print');

//with extra arguments
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');

上記のルーチンが出力されます。

以前は ... ..:
d. レモン
a. オレンジ
b. バナナ
c. リンゴ
...後
d. 果物:レモン
a. 果物:オレンジ
b. 果物:バナナ
c. 果物:りんご

キーポイント

 map is mainly to get the new array after your callback function has processed it, to get the result.
 walk is mainly to use your callback function once for each argument, to get the process.
 walk can be considered as providing additional arguments to the callback function, map cannot
 walk is mainly to operate on each value in the array, and the result of the operation affects the original array
 map mainly operates on the values in the array and then returns the array to get a new array
 walk can have no return value map should have one, because the array has to be filled


<リンク php array_mapとarray_walkの事例を紹介する記事です。php array_mapとarray_walkについては、スクリプトハウスの過去記事を検索するか、引き続き以下の記事を閲覧してください。