array_key_exists无法正常工作

时间:2018-07-29 05:58:24

标签: php array-key-exists

问题

我在使用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;

        }
    }

2 个答案:

答案 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); 在您的代码中