Допустим, у вас есть массив дней и openinghours для магазина, как это:Сортировка массива в зависимости от различных значений
Array
(
[monday] => Array
(
[day] => Monday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[tuesday] => Array
(
[day] => Tuesday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[wednesday] => Array
(
[day] => Wednesday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[thursday] => Array
(
[day] => Thursday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[friday] => Array
(
[day] => Friday
[isopen] => true
[open] => 10:00
[close] => 17:00
)
[saturday] => Array
(
[day] => Saturday
[isopen] => false
[open] => 11:00
[close] => 14:00
)
[sunday] => Array
(
[day] => Sunday
[isopen] => false
[open] => 01:00
[close] => 01:00
)
)
сейчас, я хочу, чтобы отсортировать эти дети, как это:
monday - friday: 10:00-17:00
saturday-sunday: closed
чтобы сказать среда закрывала 16:00 я хотел бы этот выход:
monday-tuesday: 10:00-17:00
wednesday: 10:00-16:00
thursday-friday: 10:00-17:00
saturday-sunday: closed
То есть, я хочу, чтобы отсортировать их, но по-прежнему держать порядок сверху вниз как первичная сортировка. Итак, как бы вы это сделали? Зациклируйте их все и сохраните часы в памяти, а сравнить дни - это один из вариантов, но нет ли лучшего решения?
EDIT: Реальный массив было предложено здесь:
$days = array(
'monday' => array(
'day' => 'Monday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'tuesday' => array(
'day' => 'Tuesday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'wednesday' => array(
'day' => 'Wednesday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'thursday' => array(
'day' => 'Thursday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'friday' => array(
'day' => 'Friday',
'isopen' => true,
'open' => '10:00',
'close' => '17:00',
),
'saturday' => array(
'day' => 'Saturday',
'isopen' => false,
'open' => '10:00', //Not used since isopen = false
'close' => '17:00', //Not used since isopen = false
),
'sunday' => array(
'day' => 'Sunday',
'isopen' => false,
'open' => '10:00', //Not used since isopen = false
'close' => '17:00', //Not used since isopen = false
)
);
Это не «сортировка» массива, это «слияние» записей массива, и нет встроенного функционала n, который сделает это за вас, так что вам в основном нужно пройти через массив, проверяя значения и объединяя их вручную. –
Думаю, я мог бы ответить на ваш вопрос, но ... вы отправили данные var_dumped, которые я не могу просто захватить , вставьте мою IDE и играйте с ..., и я слишком ленив, чтобы преобразовать ее обратно в php. Сожалею. – georg
То, что сказал @georg, я думаю, что у меня есть ответ на этот вопрос, но чтобы мы помогли вам, вы должны помочь нам помочь вам, если это имеет смысл. – Vanitas