0

PHP に深く入り込んでおり、PHP で特定の配列の元の値を 2 倍にしようとしています。別の配列を返す場合のコードは次のとおりです。

$blandArray = array(1, 2, 3, 4);

function doubleNumbers($arr) {

    $doubledArray = array();

    for ($i=0; $i < count($arr); $i++) { 

        $doubledArray[$i] = $arr[$i] * 2;

    }

    return $doubledArray;

}

print_r(doubleNumbers($blandArray));

これは、期待どおりに2倍になった数値を返しますが、新しい配列になります。私が欲しいのは、元の配列を2倍にすることです。したがって、blandArray関数を実行した後に が渡されてエコーされると、値が 2 倍になります。&渡された引数で参照するために を使用する必要があることは理解していますが、うまくいきません。何かご意見は?

4

3 に答える 3

3

参照を渡すだけでなく、変数を変更する必要があります

function doubleNumbers(&$arr) {
    for ($i=0; $i < count($arr); $i++) { 
        $arr[$i] *= 2;
    }
}
$blandArray = array(1, 2, 3, 4);
doubleNumbers($blandArray);
print_r($blandArray);

もう返されないことにも注意してください。これも配列をコピーするので、アウトオブラインで使用します。

于 2013-03-09T18:31:58.133 に答える
1

すでに述べたように、参照渡しします。これは、次のようにarray_mapを使用して実現することもできます。

$blandArray = array_map(function($val) {
    return $val * 2;
}, $blandArray);
于 2013-03-09T18:34:29.843 に答える
0

私が知っている限り、古い値を上書きすることができます。. .

$blandArray = array(1, 2, 3, 4);

function doubleNumbers($arr) {

for ($i=0; $i < count($arr); $i++) { 
$arr[i] = $arr[i] * 2;

//or

$arr[i] *= 2;

}

}
print_r(doubleNumbers($blandArray));

関数に与える同じ配列に常に配列を2倍にする場合、何かを返す必要はないと思います。Actionscriptの知識からこの答えを出しています。構文が異なる可能性があるため、ivがループ内に2行追加した理由です。

于 2013-03-09T18:34:49.057 に答える