4

PHP バージョン 5.3.2-1ubuntu4.15

最初の開始値:

$value_array = array('0.000','2.530',8);
$op_value = 2;

これを試して:

            foreach($value_array as &$source_value) {
                $source_value = $source_value + $op_value;
            }

$value_array == (2,4.53,10); を取得します。

しかし、これを実行すると:

            array_walk($value_array,function(&$source_value) {
                $source_value = $source_value + $op_value;
            });

$value_array == (0,2.53,8); を取得します。

最初のものは期待される結果を与えますが、2番目のものはそうではありません。しかし、それは何かをします。余分な 0 は切り落とされてしまいました。

どうしてこれなの?array_walk を使用したかったのですが、今度は foreach を使用する必要があります。

4

2 に答える 2

15

use宣言を使用して外部変数にアクセスできます。

        array_walk($value_array,function(&$source_value) use ($op_value) {
            $source_value = $source_value + $op_value;
        });

またはそれがグローバルである場合は、次のことができます。

        array_walk($value_array,function(&$source_value) {
            global $op_value;
            $source_value = $source_value + $op_value;
        });
于 2012-09-27T00:09:00.130 に答える
1

または、 の 3 番目のパラメーターを使用して、コールバック関数に渡す追加のパラメーターarray_walkを指定することもできます。

array_walk($value_array, function(&$source_value, $key, $extra_param) { // <--- (2) and use here
    $source_value = $source_value + $extra_param;
}, $op_value); // <--- (1) pass it here
于 2021-03-07T20:53:06.560 に答える