#php #arrays #associative-array
#php #массивы #ассоциативный-массив
Вопрос:
Я пытаюсь получить доступ к следующей паре ключ-значение ассоциированного массива в php, чтобы проверить, совпадает ли следующая пара ключ-значение или нет.
foreach($array as $key => $value){
$b = $value['date'];
$c = ($key 1)['date']; // As ($key 1) is integer value not an array
if($b == $c){
statement
}
}
Тем не менее, этот подход описан ниже, что кажется логичным.
Исключение ErrorException: попытка получить доступ к смещению массива по значению типа int
Есть ли какой-нибудь способ, которым я мог бы найти следующий элемент внутри foreach
цикла в ассоциированном массиве?
array (
0 =>
array (
'date' => "2019-03-31",
'a' => '1',
'b' => '1',
),
1 =>
array (
'date' => "2019-04-02",
'a' => '1',
'b' => '1',
),
2 =>
array (
'date' => "2019-04-02",
'a' => '2',
'b' => '1',
)
)
Комментарии:
1.
($key 1)
является целочисленным значением, поэтому($key 1)['date']
будет жаловаться. Попробуйте$array[$key 1][$date]
и будьте осторожны на последней итерации.2. Точно, так как же мне сравнить?
Ответ №1:
Я не знаю, что вам $date
нужно 'date'
, и вы $array
нигде не используете в $c
назначении. Его можно сократить, но, используя ваш код, просто проверьте next
элемент:
foreach($array as $value) {
$b = $value['date'];
$c = next($array)['date'] ?? false;
if($b == $c) {
echo 'Yes';
}
}
Если они являются последовательными целочисленными ключами, вы можете сделать это по-своему, просто проверьте, что $key 1
установлено:
foreach($array as $key => $value) {
$b = $value['date'];
$c = $array[$key 1]['date'] ?? false;
if($b == $c) {
echo 'Yes';
}
}