0

我对 PHP 的了解越来越深入,我试图将 PHP 中给定数组的原始值加倍。如果要返回不同的数组,则代码如下:

$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));

这将返回按预期翻倍的数字,但在一个新数组中。我想要的是将原始数组加倍。因此,如果blandArray在函数运行后被传递并回显,则值将翻倍。我知道我必须使用&来引用传递的参数中的内容,但我没有运气。有什么想法吗?

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));

如果你总是将数组加倍到你给函数的同一个数组中,我认为你也不必返回任何东西。我从 Actionscript 的知识中给出了这个答案,语法可能不同,因此为什么 iv 在循环中添加了 2 行。

于 2013-03-09T18:34:49.057 回答