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

乌龟壳 发布于 2016/08/30 17:57
阅读 336
收藏 0
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)
  }
}



加载中
0
老陌
老陌
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]里要改很多属性,都用这种写法代码看起来比较冗余,而且还会有性能损耗呢。
返回顶部
顶部