我有这个非常基本的代码
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,然后我打印它以确保并确定第一个循环的打印返回"乔"
但是,我设置的值不是以某种方式持久化,因为当我再次循环同一个数组以检查其自己的数组的内部值时,它给了我旧的值。
代码与我在这里显示的完全相同,两者之间没有任何内容。我猜这里有一些关于指针的东西在这里躲过我。
答案 0 :(得分:5)
该值未设置为实际array
,而是分配给在循环外不可用的当前元素。您需要将值设置为您正在循环的实际array
。试试 -
foreach ($formatted_results as &$result) {
$result['profile_pic']="joe";//set all values to joe
}
答案 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