开发者社区> 问答> 正文

这种PHP代码要怎么写比较好:报错

以下是示例,不代表现实的业务逻辑。想咨询下大家一般都怎么写的。

<?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) } }

展开
收起
kun坤 2020-06-08 19:28:21 408 0
1 条回答
写回答
取消 提交回答
  • 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]里要改很多属性,都用这种写法代码看起来比较冗余,而且还会有性能损耗呢。

    2020-06-08 19:28:26
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载