改变php数组值

时间:2016-12-16 11:58:10

标签: php arrays multidimensional-array

我有这个非常基本的代码

  foreach ($formatted_results as $result) {
          $result['profile_pic']="joe";//set all values to joe
              var_dump( $result['profile_pic']);//prints joe
        }
  foreach ($formatted_results as $result) {

              var_dump( $result['profile_pic']);//does not print joe!
        }

其中formatted_results是包含其他数组的数组。现在你可以看到,我在第一个循环中修改formatted_results中每个数组的值以包含名称joe,然后我打印它以确保并确定第一个循环的打印返回"乔"

但是,我设置的值不是以某种方式持久化,因为当我再次循环同一个数组以检查其自己的数组的内部值时,它给了我旧的值。

代码与我在这里显示的完全相同,两者之间没有任何内容。我猜这里有一些关于指针的东西在这里躲过我。

2 个答案:

答案 0 :(得分:5)

该值未设置为实际array,而是分配给在循环外不可用的当前元素。您需要将值设置为您正在循环的实际array。试试 -

foreach ($formatted_results as &$result) {
    $result['profile_pic']="joe";//set all values to joe
}

foreach - Pass by reference

答案 1 :(得分:4)

以下是代码:

    foreach ($formatted_results as $k =>  $result) {
          $formatted_results[$k]['profile_pic']="joe";//set all values to joe
              var_dump( $formatted_results[$k]['profile_pic']);//prints joe
        }
  foreach ($formatted_results as $result) {

              var_dump( $result['profile_pic']);//does not print joe!
        }

$ result不会将数据保存到$ formatted_results