За последние 24 часа нас посетили 17005 программистов и 1652 робота. Сейчас ищут 932 программиста ...

Разобрать JSON и получить SQL неделю воюю

Тема в разделе "PHP и базы данных", создана пользователем Борис животное, 11 апр 2015.

  1. Борис животное

    Борис животное Активный пользователь

    С нами с:
    25 янв 2015
    Сообщения:
    11
    Симпатии:
    0
    Приветствую Вас Уважаемые форумчане.
    Я уже неделю пытаюсь решить задачу и у меня складывается такое впечатление, что я без Вас не справлюсь.
    Опишу задачу!
    Имеется JSON который передается браузером на сервер. Этот JSON нужно разобрать так, чтобы получить SQL запрос.
    Дело в том, что структура у данных всегда одна, а вот вложенность может быть больше или меньше!

    Сам JSON:
    Код (Text):
    1. [{
    2.     "5":
    3.             [{
    4.                 "248":
    5.                         [{
    6.                             "777":""
    7.                         }]
    8.             },
    9.  
    10.             {
    11.                 "249":
    12.                         [{
    13.                             "251":""
    14.                         },
    15.  
    16.                         {
    17.                             "250":""
    18.                         },
    19.  
    20.                         {
    21.                             "252":
    22.                                     [{
    23.                                         "400":""
    24.                                     }]
    25.                         }]
    26.             }]
    27. }]
    Там где цифры - это значения, а название полей опишу ниже.
    Я помещаю этот JSON в json_decode и получаю массив, с которым далее нужно работать.

    После обработки массив, на выходе нужно получить следующий SQL
    Код (Text):
    1. district = 5 AND ((village = 248 AND street = 777) OR (village = 249 AND (street = 251 OR street = 250 OR (street = 252 AND house = 400))))
    Там где district это первый уровень вложенности, village - второй, street - третий и т.д.
    Я пытался сделать так:
    Создал массив
    Код (Text):
    1. $tables = array("district","village","street","house");
    и в зависимости от уровня вложенности подставлял значение.

    Структура у JSON всегда одна, а уровней вложенности, как я уже говорил, может быть больше или меньше.

    P.S. Я уже с ума схожу, и так и сяк пытаюсь сделать, у меня ничего не выходит. Может вы сможете дать мне, хотя бы, пендаль в правильное направление!
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    подсказываю, если вложенность не определена, решением может быть либо рекурсивный разбор, либо цикл foreach ;)
     
  3. Борис животное

    Борис животное Активный пользователь

    С нами с:
    25 янв 2015
    Сообщения:
    11
    Симпатии:
    0
    Я пробовал использовать рекурсию.
    Собрать SQL запрос мне удалось, но проблема со скобками, не получается у меня задать алгоритм таким, чтобы скобки были проставлены правильно
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    предположу что, для правильно расстановки скобок нужно использовать "if"...
    смекаешь? ;)