Я реорганизую приложение для календарей. В календаре есть пользовательская сетка (слоты, в которых могут выполняться заказы), но также необходимо отображать заказы «вне сети». Подумайте о «обычных» слотах в 08:00, 09:00 и «нерегулярных» слотах, когда кто-то забронирован в 08:39. По бизнес-причинам мне нужно отображать эти слоты по-разному (CSS), иначе они будут вести себя одинаково. Я искал Руководство по PHP, но встроенные функции массива не выполняют именно то, что мне нужно.Объединение двумерных массивов в группы
$officialGrid = array(
array('grid' => TRUE, 'time' => '08:00', 'content' => NULL),
array('grid' => TRUE, 'time' => '09:00', 'content' => NULL));
$bookings = array(
array('grid' => NULL, 'time' => '08:00', 'content' => 'Paul Simon'),
array('grid' => NULL, 'time' => '08:00', 'content' => 'Art Garfunkel'),
array('grid' => NULL, 'time' => '08:39', 'content' => 'Homer J. Simpson'));
Я мог бы просто добавить эти массивы, но по производительности причинам хотели бы сократить результат:
$timeSlotsToDisplay = array(
array('grid' => TRUE, 'time' => '08:00', 'content' => 'Paul Simon, Art Garfunkel'), //regular
array('grid' => NULL, 'time' => '08:39', 'content' => 'Homer J. Simpson'), //irregular
array('grid' => TRUE, 'time' => '09:00', 'content' => NULL)); //vacant
Я также гибко изменять типы данных для значений (content
может быть массивом). Есть ли элегантное решение для слияния этих массивов, кроме начала цикла и сравнения?
PS: Просто для иллюстрации в терминах PostgreSQL мне нужно SELECT DISTINCT ON (time) grid, time, string_agg(content) FROM myDB GROUP BY time ORDER BY time, grid;
(пожалуйста, игнорируйте возможные ключевые слова, не цитируя из-за форматирования, также не опробовали запрос).
Не то, чтобы я знал. петли не злые, хотя ... – Steve
Лучше иметь время как ключи (для официальногоGrid) – Cheery