1

问题

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

        }
    }
4

2 回答 2

2

您的$values数组包含相同 key 的重复项'a',这将被忽略。因此,$counter_array最终将包含$values.

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

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

当然,你的循环必须相应地改变:

foreach ($values as $a) {
    list( $key, $price ) = $a;
    // ...
于 2018-07-29T06:04:20.540 回答
0

这是因为你的实际数组在内部就像 array(2) { ["a"]=> int(100) ["b"]=> int(200) 当你做 var_dump($values); 在您的代码中

于 2018-07-29T06:16:18.690 回答