У меня проблемы с использованием функции 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 ($ значения);
В вашем коде