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

标签 php multidimensional-array foreach

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

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

Array
{
  [0] => Array
   {
     [name] => Bob
     [age] => 33
     [state] => CA
     [visited] => 0
   }
   ...
}

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

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

如果我

print_r($person)

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

感谢帮助。

最佳答案

您正在该 for 循环中创建一个名为 $person 的新变量,并且您的数组将永远不会看到该新变量的范围。

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

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

关于PHP:替换数组值在 foreach 循环后不会保留,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6754710/

相关文章:

asp.net-mvc-3 - 部分 View 中的表单 - 需要正确的答案

php - PHP foreach 语句上的 jQuery 切换

javascript - 将对象数组缩减为在所有对象共享的属性中找到的唯一字符串 (javascript)

php - 根据日期返回RSS节点

c++ - 像时尚一样在网格中格式化 C++ 中的输入

java - java二维数组中的单词搜索

python - 将一个已排序数组中的数据插入到另一个已排序数组中

php - 从 PHP 中的 XML 文件中获取表格的特定行

php - Laravel - 仅验证具有固定长度和所需空间的数字

php - 在数据库上设置小数点但仍然只读取整数