Как преобразовать объекты в массив массивов в PHP? - PullRequest
1 голос
/ 03 декабря 2011

У меня есть пост jQuery, который возвращает некоторые объекты.

Итак, у меня есть результат запроса к БД, который я выполняю json_encode($result), а затем отправляю его как ответ в функции success внутри сообщения jQuery.

Если я утешаю ответ, я вижу несколько объектов. Я хочу отправить ответ в виде массива.

В PHP

json_encode($results)

В JavaScript:

success: function(json) {
  console.log(json);
}

В журнале консоли:

[>Object , >Object , >Object]

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 03 декабря 2011

Ваш $results в php - это массив объектов или ассоциативных массивов.Перед отправкой с использованием кастинга сделайте его массивом с индексами с числовым индексом:

// ASSUMING each $result object does not have its own nested arrays
foreach ($results as &$result) {
    $result = array_values((array) $result);
}

Обратите внимание, что вы потеряете возможность получать элементы по имени столбца.

Но, пожалуйста, отойдите и подумайтеоткуда ваш результат $.

Если вы используете драйвер mysql, попробуйте сделать это при построении результата:

$results = array();
// Note we use MYSQL_NUM option, so $row looks like array('col1value', 'col2value')
while (FALSE !== ($row = mysql_result_array($resource, MYSQL_NUM))) {
    $results[] = $row;
}

json_encode($results);
1 голос
/ 03 декабря 2011

В Javascript с JQuery:

jQuery.makeArray ();

http://api.jquery.com/jQuery.makeArray/

0 голосов
/ 03 декабря 2011

json encode закодирует строку как объект json, который в javascript является объектом. в javascript массив - это просто объект со специальными вспомогательными функциями. не должно быть необходимости создавать массив из объекта, поскольку вы можете манипулировать объектом так же легко, как манипулировать массивом.

0 голосов
/ 03 декабря 2011

В php, кастинг:

$ aArray = (массив) $ oObject;

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