数组被覆盖而不是创建新值

时间:2014-03-26 10:43:23

标签: php arrays

我有以下代码:

while(...){
$foo='somevalue';
 $bar[$foo] = $bar[$foo] + $var;
}

$ foo可以在每次迭代时更改或保持不变,我想要做的是为相同的$ foo添加所有相同的值,但是当我在while循环后计数时,只有1。

我希望数组计数与不同$ foo值的数量相同。 我怎样才能改变它,以免它被覆盖?

编辑:稍后在文件中我要使用foreach ($bar as $key => $value)

我的期望是如果$ foo值改变,使用$bar[$foo] = $bar[$foo] + $var;将在数组中创建新条目

2 个答案:

答案 0 :(得分:0)

你可以使用;

$a = array("10","10","10","60", "2", "2","70");


foreach ($a as $k => $v) {
    $bar[$v][] = $k;
}

foreach ($bar as $key => $val) {
    echo count($bar[$key]) . "\n";
}

以下是工作演示: phpfiddle

答案 1 :(得分:0)

确定找到解决方案: 问题是数组没有被覆盖只是在$bar=array();循环内重置所以刚刚添加了is_array检查

 while(...){ 
    if (!is_array($bar))
        $bar=array();         
        $foo='somevalue';
        $bar[$foo] = $bar[$foo] + $var;
        }

感谢您的帮助