2015-02-02 2 views
-1

Я работал над показом недельных дней на своем веб-сайте. С панели администратора пользователю разрешено выбирать дни, в которые откроется магазин, а также общие тайминги и специальные тайминги. После сохранения необходимых данных, мой JSON декодированного объект выглядит следующим образом:Декодирование строки json в указанную строку

stdClass Object 
(
    [Mon] => stdClass Object 
     (
      [DAY_NAME] => Mon 
     ) 

    [Tue] => stdClass Object 
     (
      [DAY_NAME] => Tue 
     ) 

    [Wed] => stdClass Object 
     (
      [DAY_NAME] => Wed 
     ) 

    [Fri] => stdClass Object 
     (
      [DAY_NAME] => Fri 
      [SPECIAL_START_TIME] => 08:00 am 
      [SPECIAL_END_TIME] => 07:00 pm 
     ) 

    [Sat] => stdClass Object 
     (
      [DAY_NAME] => Sat 
      [SPECIAL_START_TIME] => 03:00 am 
      [SPECIAL_END_TIME] => 02:00 am 
     ) 

) 

Я написал функцию, где я могу получить первый открытый день недели и последний открытого день недели. Теперь проблема возникает, если предположить, что дни открыты: понедельник, вторник, среда, воскресенье. В этом случае первый открытый день недели - понедельник, а последний открытый день недели - воскресенье. Итак, есть ли в любом случае я могу получить первый открытый день в качестве воскресенья и последнего открытого дня в среду? Есть много случаев с этой логикой, изо всех сил пытаясь их получить.

+1

Это не массив, и в этом посте не существует JSON ... пожалуйста, подумайте над редактированием названия, чтобы оно касалось того, что вы на самом деле спрашиваете. – JAAulde

+0

Ваш вопрос еще неясен. Являются ли дни в вашем массиве stdClass день открытия магазина? Или он открыт только во время «особого времени»? –

ответ

0

Кажется, что ваша идея недели начинается в воскресенье. (Воскресенье - суббота)

Вы должны переключиться на сохранение дня недели. На основе вашего предпочтительного первого дня. 0 воскресенье, 6 суббота.

Вы можете использовать функцию PHP Дата и получить и использовать

$dayofweek=date("w",strtotime($your_date_here)); 

http://php.net/manual/en/function.date.php

Тогда вы могли бы сделать простой ОКВЕК свой день недели и получить их в том же порядке каждый раз. Ваш пример изменится.

stdClass Object 
(
    [1] => stdClass Object 
     (
      [DAY_NAME] => Mon 
     ) 

    [2] => stdClass Object 
     (
      [DAY_NAME] => Tue 
     ) 

    [3] => stdClass Object 
     (
      [DAY_NAME] => Wed 
     ) 

    [5] => stdClass Object 
     (
      [DAY_NAME] => Fri 
      [SPECIAL_START_TIME] => 08:00 am 
      [SPECIAL_END_TIME] => 07:00 pm 
     ) 

    [6] => stdClass Object 
     (
      [DAY_NAME] => Sat 
      [SPECIAL_START_TIME] => 03:00 am 
      [SPECIAL_END_TIME] => 02:00 am 
     ) 

) 
+0

Мне не нужно иметь дело с датами. Мне просто нужно показать, в какие дни открыт магазин – nirvair

0

Вы можете передать заказ, в котором вы хотите обработать данные, основанные на дневном режиме. Нравится,

stdClass Object 
(
    [Mon] => stdClass Object 
     (
      [DAY_POSITION] => 1 
      [DAY_NAME] => Mon 
     ) 

    [Tue] => stdClass Object 
     (
      [DAY_POSITION] => 2 
      [DAY_NAME] => Tue 
     ) 

    [Wed] => stdClass Object 
     (
      [DAY_POSITION] => 3 
      [DAY_NAME] => Wed 
     ) 

    [Fri] => stdClass Object 
     (
      [DAY_POSITION] => 5 
      [DAY_NAME] => Fri 
      [SPECIAL_START_TIME] => 08:00 am 
      [SPECIAL_END_TIME] => 07:00 pm 
     ) 

    [Sat] => stdClass Object 
     (
      [DAY_POSITION] => 6 
      [DAY_NAME] => Sat 
      [SPECIAL_START_TIME] => 03:00 am 
      [SPECIAL_END_TIME] => 02:00 am 
     ) 

) 
+0

Итак, как это решить проблему? – nirvair

+0

Как и в вашем вопросе, у вас есть функция, которая обрабатывает полученные данные. Поэтому, когда вы делаете эту карту, данные основаны на значении, которое вы получаете в ** DAY_POSITION **. Также создайте массив для дней и их позиции как ** array ('0' => 'sunday', '1' => 'monday', ...); **, чтобы помочь отображать во время обработки. – jqheart

Смежные вопросы