我在使用PHP函数array_key_exists
时遇到问题。即使我的数组具有键,该函数也始终返回false。我想知道使用动态增长的数组是否存在问题。我是PHP的新手,很抱歉,如果这个问题很烦人。
如果数组具有键,我需要array_key_exists
函数返回true。
我尝试改用isset(CounterArray[$key])
,但没有成功。
我已经阅读了有关特定功能的PHP文档,并且我也检查了关于堆栈溢出的类似问题,但是没有一个适合我的情况。我是 可耻地为此花费了大量时间。
$values=[
"a"=>100,
"a"=>100,
"a"=>100,
"b"=>200,
];
$counterArray = array();
foreach ($values as $key => $price) {
if(!array_key_exists( $key , $counterArray))){
$counterArray[$key]=$price;
}else{
$counterArray[$key] += $price;
}
}
答案 0 :(得分:2)
您的$values
数组包含相同键'a'
的重复项,将被忽略。因此,$counter_array
最终将包含$values
的精确副本。
听起来$values
应该是一个数组数组,例如:
$values = [
["a"=>100],
["a"=>100],
["a"=>100],
["b"=>200],
];
当然,您的循环必须相应地更改:
foreach ($values as $a) {
list( $key, $price ) = $a;
// ...
答案 1 :(得分:0)
这是因为您的实际数组在内部像 array(2){[“ a”] => int(100)[“ b”] => int(200) 当您这样做时,您将获得高于输出的结果 var_dump($ values); 在您的代码中