【发布时间】:2013-07-17 21:59:52
【问题描述】:
我从一个有 101 个键的查询构建了一个多维数组
当我在某个 foreach 循环之前回显 $result['q101'] 时,它会显示正确的数据..
在此循环之后,数组以某种方式修改为 $result['q101'] => 8...???
注意:无论数字如何,这都会发生在最后一个键上。
> [q99] => Array
> (
> [name] => Disentanglement from Love Relationship
> [abbr] => DfLR
> [type] => Ascending
> [response] => Sometimes
> [score] => 3
> )
>
> [q100] => Array
> (
> [name] => Feelings of Self Worth
> [abbr] => FoSW
> [type] => Ascending
> [response] => Almost Always
> [score] => 1
> )
>
> [q101] => 8 /// WTF is this..??
下面是罪魁祸首..如果我删除这个一切都是笨拙的多莉。
foreach ($result as $key => $val){
$response_table .= '<tr><td>'.str_replace('q', '', $key).'</td><td>'.$val['response'].'</td><td>'.$val['abbr'].'</td><td>'.$val['type'].'</td><td>'.$val['score'].'</td></tr>';
$min[$val['abbr']] += 1;
$max[$val['abbr']] += 1;
}
【问题讨论】:
-
你能告诉我们完整的代码吗?是否有任何通过引用使用
$val的foreach 循环?像这样:$key => &$val. -
有...我不知道这会将活动扳手扔进系统的其余部分。现在我回到手册并看到红色的大警告,我在打自己的耳光......
-
我通常在任何
foreach循环上方添加注释,使用引用语法“警告:foreach by reference!”并在关闭}后立即添加一个unset(),并附上适当的评论,说明它正在破坏参考。引用应该谨慎使用 - 它们有各种尴尬的含义,包括对性能的负面影响(内部使用称为“写入时复制”的技巧针对按值分配进行了优化)。 -
@IMSoP - 所以,如果循环是标准的 $key => $val 那么未设置就不需要正确?
-
@SmithSmithy 正确。
&是需要注意的标志。
标签: php multidimensional-array foreach