更改php数组值

Joe*_*chi 1 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!
        }
Run Code Online (Sandbox Code Playgroud)

其中formatted_results是包含其他数组的数组。现在,您可以看到,我正在第一个循环中修改formatted_results中每个数组的值以包含名称joe,然后我进行打印以确保确定,第一个循环的打印返回“ joe”

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

该代码与我在此处显示的代码完全一样,两者之间没有任何关系。我猜想这里有一些关于指针的东西使我难以理解。

Sou*_*ose 5

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

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

foreach-通过引用传递