如何通过json将数组(多维/关联)和一些变量一起发送?

时间:2010-05-28 04:55:10

标签: php json

我有一个多维数组

$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.length)在movieData上创建一个选择框,     所以我想要以下面的格式编辑json编码数据,这样我就可以成功回复

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

我想知道如何通过json一起发送一个数组(多维/关联)和一些变量?

更新

我已经正确地制作了我的数组,之后我得到了json编码数组

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

现在如何知道moveData的长度?我在jquery上使用data.movieData.length我得到了这些值,但它返回undefined

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

要将更多变量传递给json_encode(),您只需要为传入的数组添加另一个级别,并为不同的值添加顶级部分。

如果您的电影数据数组位于$ movie_data中,那么您将创建如下数组:

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

解析json时,您需要使用数据更改代码以引用数组的特定部分,例如'movie_data'