Я пытаюсь сравнить несоответствующие значения в двух многомерных массивах ($allSessions
, мой главный массив и $userSessions
, мой внутренний массив ... все в нем должно быть в пределах $allSessions
, но структурировано по-разному), и мой подход состоял в том, чтобы использовать foreach внутри цикла foreach.PHP Сравнение двух многомерных массивов с foreach
Это работает в большинстве ситуаций, кроме одного (когда $userSession
содержит только один элемент).
Мне интересно, вызвана ли эта ошибка этим циклом в цикле? Когда он глючит, потому что $ userSessions содержит только 1 элемент, возвращаемый $unregistered
массив содержит кратные каждого элемента ...
$allSessions = $this->getAllUpcoming();
$unregistered = array();
$userSessions = $this->getUserSessions($userID);
foreach ($allSessions as $session) {
foreach ($userSessions as $user) {
if ($user["entry_data"]["session-participant-session"]["id"] !== $session["id"]){
array_push($unregistered, $session);
}
}
}
foreach только что ожидает массив. ему все равно, есть ли 0, 1 или gazillions предметов. он просто перебирает все, что там есть. –
Что означает '$ userSessions' с одним элементом? – bloodyKnuckles
Вы уверены, что он работает, когда у вас есть более одного элемента в '$ userSessions'? Мне кажется, что вы получите все несоответствующие элементы в '$ userSessions' для каждого элемента в' $ allSessions.' –