tags:

views:

40

answers:

2

i have an multidimensional array

$ouptput=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

when i send these data via json

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

it returns

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

but i need json encoded data properly so that i can create an select box on movieData using(movieData.length), so for that i want json edcoded data in below format so that i can retrive successfully

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

i want to know how to send an array(multidimensional/associative) and some varaibles together through json?

UPDATE

i have made my array properly and after it i m getting json encode array below

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

now how to know the length of moveData? i used data.movieData.length on jquery where i m getting these value but it returns undefined

A: 

To pass more variables to the json_encode() you just need to add another level to the array you pass in, with top level sections for your different values.

If your array of movie data was in $movie_data then you'd create an array like the following:

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

When you parse the json you will need to change the code using the data to reference the specific part of the array, like 'movie_data'

jeremyclarke
+2  A: 

MovieData is an object, no more an Array, so you have to visit all the properties and count them manually, something like the code below

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
Eineki
@Eineki Thank you very very much! and there should be `()` for if condition
diEcho
@I Like PHP: You are right. Fixed the if syntax. Thanks.
Eineki