2014-03-26 37 views
0

我有以下代码:阵列覆盖,而不是创造新的价值

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

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

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

编辑:后来我想用foreach ($bar as $key => $value)

我的期望是,如果$ foo的值更改

使用 $bar[$foo] = $bar[$foo] + $var;将创建数组新条目在文件中
+0

显示您的完整码。 '$ var'没有定义 –

+0

'$ bar [$ foo] [] = $ var;'? –

+0

@HüseyinBABAL$ var只是一些int – grasshopper

回答

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

+0

无论我是否放置$ bar [$ foo] [$ i]或$ bar [$ i] [$ foo],$ foo都会被覆盖,因此不会将新的集合添加到数组中,只需覆盖 – grasshopper

+0

那么,我的回答不适合你的问题? –

+0

@grasshopper你可能不会递增'$ i' –

0

OK找到解决方案: 问题是,阵列wasnt被覆盖内环只是重置与$bar=array();所以刚才添加is_array检查

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

感谢您的帮助