ОБНОВЛЕНИЕ: после ответов, которые я получил, я понял, что буду пытаться решить это уже с запросом базы данных, поэтому я написал более подробный отчет здесь
ORIGINAL POST: Я хотел бы сравнить два многомерных массива и избавиться от элементов, которые соответствуют определенным критериям. Я знаю, что мне придется перебирать массивы с помощью некоторых клавиш, а затем отключать, но я не могу сделать это правильно.
Два массива – это $all
что хранит все доступные комнаты и их кровати, и $reserved
которых есть только зарезервированные комнаты и зарезервированные кровати.
Я хочу пропустить все оговорки и взять название комнаты, которое находится в позиции $reservations[x][0]
где x – просматриваемая в данный момент резервирование и сравнивает ее со всеми элементами в $all[a][0]
где a в настоящее время просматривается комната.
Итак, когда я нахожу, что значение $all[0][0]
=> «Luxury Room» соответствует $reservations[0][0]
=> «Luxury Room», я посмотрю на кровати и код кровати на месте y, где y – рассматриваемый в настоящее время код кровати $reservations[x][1][y]
и сравнивает его со всеми доступными кроватями для сопоставленной комнаты, так что с помощью $all[0][1][b]
где b – все доступные номера.
И когда я узнаю, что значение $all[0][1][1]
=> 'xx2' соответствует значению в $reservations[0][1][0]
=> 'xx2', я отключу индекс 0 1 от $all
поэтому, наконец, когда я пройду через массив $all
и перечислит индекс каждого элемента [0] как заголовок и элементы массива в индексе 1 в качестве постелей, я бы только встал на кровать «xx2», как доступный для «Luxury Room»,
//$all is an array where index 0 is an array $all = array( 0=>array( //index 0 has value 'Luxury Room' (room title) 0=>'Luxury Room', //index 1 is an array 1=>array( //where index 0 has value 'xx1' (bed code) 0=>'xx1', //where index 1 has value 'xx2' (bed code) 1=>'xx2')), //again index 1 is an array etc. just as above... 1=>array( 0=>'Cheap Room', 1=>array( 0=>'zz1', 1=>'zz2', 2=>'zz3', 3=>'zz4'))); $reserved = array( 0=>array( 0=>'Luxury Room', 1=>array(0=>'xx2')));