PHP:在foreach循环后,替换数组值不会停留

mik*_*ble 12 php foreach multidimensional-array

我正在改变多维数组中的值,并且它不会停留在用于遍历它的foreach循环之外.

我的数组最初看起来像这样:

Array
{
  [0] => Array
   {
     [name] => Bob
     [age] => 33
     [state] => CA
     [visited] => 0
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

我的PHP通过以下方式进入:

foreach ($people as $person){
 echo $person['name']
 ....
 logic for the visited variable
 ...
 $person['visited'] = $calculated_visit_value;
}
Run Code Online (Sandbox Code Playgroud)

如果我

print_r($person)
Run Code Online (Sandbox Code Playgroud)

在foreach循环的最后(但内部),一切看起来都很好,访问的值设置.但是,如果我print_r($people)在循环之外,$person['visited']则不设置.我不知道我做错了什么.

感谢帮助.

Ali*_*guy 37

您正在创建一个$person从for循环中调用的新变量,您的数组将永远不会看到该新变量的范围.

您可以尝试通过引用传递它,如下所示:

foreach ($people as &$person){
 echo $person['name'];
 ....
 logic for the visited variable
 ...
 $person['visited'] = $calculated_visit_value;
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,就是这样!谢谢.我需要等待7分钟才能将其标记为正确,但这非常有效. (2认同)
  • 这有效.顺便说一下,这个答案还没有被接受. (2认同)
  • 这很好用,应该标记为正确的答案. (2认同)