Как отправить массив (многомерный / ассоциативный) и некоторые переменные вместе через JSON? - PullRequest
1 голос
/ 28 мая 2010

У меня многомерный массив

$output=Array
    (
        [0] => Array
            (
                [0] => mov_1
                [1] => MY FAIR LADY
            )

        [1] => Array
            (
                [1] => mov_10
                [2] => love actually
            )
    )
    and two variables
    $avlblQnty=50
    $success= true

когда я отправляю эти данные через json

echo json_encode( array('movieData'=>$output,'stock'=>$avlblQnty,'sucess'=>$success));

возвращает

{"movieData":[["mov_1","MY FAIR LAD],{"1":"mov_10","2":"love actually"}],"stock":0,"success":true}

но мне нужно правильно закодировать данные в формате json, чтобы я мог создать поле выбора для movieData, используя (movieData.length), так что для этого я хочу json edcoded данные в формате ниже, так что я могу успешно восстановить

{"movieData":[{"mov_1":"MY FAIR LAD,mov_10":"love actually"}],"stock":0,"success":true}

Я хочу знать, как отправить массив (многомерный / ассоциативный) и некоторые переменные вместе через JSON?

UPDATE

Я правильно сделал свой массив, и после него я получаю массив кодирования json ниже

{"movieData":{"mov_10":"love actually","mov_1":"my fair lady"},"stock":20,"success":true}

Теперь, как узнать длину moveData? я использовал data.movieData.length в jquery, где я получаю эти значения, но он возвращает undefined

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

MovieData - это объект, а не массив, поэтому вам нужно посетить все свойства и считать их вручную, что-то вроде кода ниже

var theLength=0;
for(var propertyName in movieData) {
    // filtering out inherited properties
    if (movieData.hasOwnProperty(propertyName)) {
        theLength++;
    }
}
// now theLength represent the length of the array
0 голосов
/ 28 мая 2010

Чтобы передать больше переменных в json_encode (), вам просто нужно добавить другой уровень в массив, который вы передаете, с разделами верхнего уровня для ваших различных значений.

Если бы ваш массив данных фильма был в $ movie_data, вы бы создали массив, подобный следующему:

$output_for_json = array(
  'movie_data' => $movie_data, 
  'stock' => $stock,
  'success' => $success
);

Когда вы анализируете json, вам нужно изменить код, используя данные для ссылки на конкретную часть массива, например 'movie_data'

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