繁体   English   中英

array_key_exists无法正常工作

[英]array_key_exists not working as expected

问题

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

        }
    }

您的$values数组包含相同键'a'重复项,它将被忽略。 因此, $counter_array最终将包含$values的精确副本。

听起来$values应该是一个数组数组,例如:

$values = [
    ["a"=>100],
    ["a"=>100],
    ["a"=>100],
    ["b"=>200],
];

当然,您的循环将必须进行相应的更改:

foreach ($values as $a) {
    list( $key, $price ) = $a;
    // ...

这是因为您的实际数组在内部就像array(2){[“” a“] => int(100)[” b“] => int(200)当执行var_dump($ values)时,您将得到上面的输出; 在你的代码中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM