且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

更改多维数组php的值

更新时间:2023-02-23 09:16:05

默认情况下,当您在 foreach 中使用数组时,PHP 将复制一个数组.为了防止 PHP 创建此副本,您需要使用 &

By default PHP will copy an array when you use it in a foreach. To prevent PHP from creating this copy you need to use to reference the value with &

简单例子:

<?php

$arrFoo = [1, 2, 3, 4, 5,];
$arrBar = [3, 6, 9,];

默认 PHP 行为:复制

foreach($arrFoo as $value_foo) {
    foreach($arrBar as $value_bar) {
        $value_foo *= $value_bar;
    }   
}


var_dump($arrFoo);
/* Output :
array(5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)

}
*/

ByReference : 不要创建副本 :

foreach($arrFoo as &$value_foo) {
    foreach($arrBar as $value_bar) {
        $value_foo *= $value_bar;
    }   
}

var_dump($arrFoo);
/* Output :
array(5) {
  [0]=>
  int(162)
  [1]=>
  int(324)
  [2]=>
  int(486)
  [3]=>
  int(648)
  [4]=>
  &int(810)
}

*/