仅将唯一值插入数组中

时间:2010-03-26 15:47:36

标签: php arrays associative-array

我有一组值按照它们发生的顺序推入数组

$valsArray = array(); 

//I process each value from a file (code removed for simplicity) 
//and then add into the array 
$valsArray[] = $val; 

如何将值转换为关联数组,而不是仅在不存在的情况下插入值(如$key of associative array)。如果确实存在,则将其计数($value of associative array)递增1.我试图找到一种更有效的方法来处理这些值,而不是我现在正在做的事情。

5 个答案:

答案 0 :(得分:5)

$ valsArray = array_unique($ valsArray);

答案 1 :(得分:4)

@$valsArray[$val]++;

应该为你做。新条目作为键添加,值为1,现有条目的值增加。 @避免每次遇到新值时抛出E_NOTICE。

答案 2 :(得分:3)

当您循环使用您的值时,您可以执行以下操作:

isset( $valsArray[$val] ) ? $valsArray[$val]++ : $valsArray[$val]=1;

示例:

$valsArray=array();

$val="foo";
isset($valsArray[$val])?$valsArray[$val]++:$valsArray[$val]=1;
$val="foo";
isset($valsArray[$val])?$valsArray[$val]++:$valsArray[$val]=1;
$val="bar";
isset($valsArray[$val])?$valsArray[$val]++:$valsArray[$val]=1;

print_r($valsArray);

会得到你:

Array ( [foo] => 2 [bar] => 1 ) 

答案 3 :(得分:1)

当你完成添加时,你不能只是$valsArray = array_unique($valsArray);吗?或者你需要按正确的顺序保持按键吗?

答案 4 :(得分:0)