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;

}
}

0

Решение

Ваш $values массив содержит дубликаты одного и того же ключа 'a', который будет игнорироваться. Таким образом, $counter_array будет содержать точную копию $values,

Это звучит как $values должен быть массивом массивов, например:

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

Конечно, ваш цикл должен будет измениться соответственно:

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

Другие решения

Это потому, что ваш фактический массив внутренне похож
array (2) {[«a»] => int (100) [«b»] => int (200)
Вы получите выше выхода, когда вы делаете
var_dump ($ значения);
В вашем коде

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector