以下是示例,不代表现实的业务逻辑。想咨询下大家一般都怎么写的。
<?php
$cache = array(); $cache['0'] = array(); $cache['1'] = array(); $cache['2'] = array();
for ($i = 0; $i < 10; $i++) { $key = $i % 3; $tmp = $cache["$key"]; $tmp["$i"] = $i; }
var_dump($cache);
结果是array(3) { [0]=> array(0) { } [1]=> array(0) { } [2]=> array(0) { } }可是我需要的结果是
array(3) { [0]=> array(4) { [0]=> int(0) [3]=> int(3) [6]=> int(6) [9]=> int(9) } [1]=> array(3) { [1]=> int(1) [4]=> int(4) [7]=> int(7) } [2]=> array(3) { [2]=> int(2) [5]=> int(5) [8]=> int(8) } }
for ($i = 0; $i < 10; $i++) { $key = $i % 3; $cache[$key][$i] = $i; }
######回复 @老陌 : 根据你的提示,我实际项目中的代码解决了,我也是用了引用,但是在循环里没有unset它,直接$temp = NULL,结果导致最后都是NULL。原来是这样,谢谢了。######回复 @乌龟壳 : 可以不要,个人建议保留######回复 @老陌 : 最后那个unset是必须的吗######回复 @乌龟壳 : 那就用引用, $tmp = &$cache[$key]; $tmp[$i] = $i; unset($tmp);######我后面的正确结果就是用这种写法生成的,但是如果实际上,在$cache[$key]里要改很多属性,都用这种写法代码看起来比较冗余,而且还会有性能损耗呢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。