Проблема с массивом PHP - PullRequest
0 голосов
/ 29 января 2009

Я отправляю некоторые данные через AJAX в файл PHP. Это о параметрах фильтра. В любом случае, я отправляю это так:

filter[0][data][type]   string
filter[0][data][value] automobiles
filter[0][field] product

filter[1][data][type] numeric
filter[1][data][value] 6000
filter[1][field] price

Это выше взято из консоли FireBug. Затем в PHP:

$filter = $_POST['filter'.$i];
if (is_array($filter)) {
    for ($i=0;$i<count($filter);$i++){
        switch($filter[$i]['data']['type']){
            case 'string' : 
                        // I'm doing my select from database based on that and so on

Итак, перевод этого будет: «Получите мне все записи из базы данных: хмм, давайте проверим фильтры ... Я получаю первый тип фильтра, который является« строкой », который должен быть применен к столбцу mysql с именем» product "... Так что я ищу значение" автомобили "там ... Но я еще не закончил, второй фильтр ссылается на числовой фильтр для столбца" цена "из базы данных. взяв его значение и добавив его в запрос. Поэтому я в итоге выберу все автомобили, цена которых превышает 6000.

Пока все хорошо. Проблема в том, что мой способ получения данных изменился, и я больше не могу отправлять свои данные в этом формате. Новый формат - это URL, который выглядит следующим образом:

filter[0][field]=prodct&filter[0][data][type]=string&filter[0][data][value]=automobiles&filter[1][field]=price&filter[1][data][type]=numeric&filter[1][data][value]=6000

Я могу сделать разнесение по этому символу "&" и получить массив ... Я могу многое сделать ... Проблема в том, что я не знаю, как настроить свой скрипт построения запросов, чтобы работать с полученными данными такого типа ... Так что я могу сделать "switch ($ filter [$ i] ['data'] ['type']) {" снова ...

Есть идеи по изменению кода?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 января 2009

parse_str ($ QueryString); а потом все делай как обычно. Этот метод обработает строку запроса и импортирует переменные в глобальное пространство имен (что может быть опасно), поэтому, возможно, используйте его вторую форму (приведенную на странице руководства):

$result = array();
parse_str($queryString, $result)
$filters = $result['filter'];

foreach($filters as $filter) {
// your code
}
0 голосов
/ 29 января 2009

Я отправляю данные как объект JSON и преобразую их по php обратно в массив, как тот, который вы использовали ранее.

На php вы можете использовать json_decode, чтобы вернуть данные JSON в массив, и вы можете продолжать использовать оставшуюся часть кода, как и раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...