代码之家  ›  专栏  ›  技术社区  ›  xkeshav

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

  •  1
  • xkeshav  · 技术社区  · 14 年前

    我有一个多维数组

    $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) , 因此,我希望json-edcoded数据采用以下格式,以便成功检索

    {"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 ?我用过 data.movieData.length 在jquery上,我得到这些值,但它返回 undefined

    2 回复  |  直到 11 年前
        1
  •  2
  •   Eineki    14 年前

    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
    
        2
  •  0
  •   jerclarke    14 年前

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

    如果您的电影数据数组在$movie_数据中,那么您将创建如下数组:

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

    当您解析JSON时,您需要使用数据更改代码以引用数组的特定部分,如“movie\u data”。