PHP的二维JSON数组

时间:2012-12-02 18:17:37

标签: php javascript ajax json

我有一个看起来像这样的JSON编码数组(它来自一个2d PHP字符串数组):

[
[
    "a1",
    "a2",
    "a3",
    "a4"
],
[
    "b1",
    "b2",
    "b3",
    "b4"
],
[
    "c1",
    "c2",
    "c3",
    "c4"
]
]

已在http://jsonlint.com/

上验证

现在我想通过Ajax将此数组发送到另一个页面并将其转换回2d PHP数组。 在创建一个JSON数组后,我执行以下操作(其中myJsonArray是我将数组放入Javascript数组后给它的名称。:

$.ajax({
       type: "GET",
       url: "somewhere.php",
       data: {jsonArray : myJsonArray},
       dataType: "json",
       success: function(msg){
         alert( msg); 
       }

     });
 }

然后在somewhere.php我做:

 $json_array = $_GET['jsonArray'];

 $myArray = json_decode($json_array,true);

但当我回应结果时,我得到了

[Object object]

我不确定如何重新创建PHP数组。

编辑: 如何制作myJsonArray:

<?php
$array = json_encode($original_array);

echo "var myJsonArray = ". $array . ";\n";
?>

我还想指出,出于测试目的,我在警报框中打印myJsonArray成功,它确实按预期打印出阵列。

2 个答案:

答案 0 :(得分:2)

“[Object object]”是将对象评估为字符串的javascript。

当您将可选的“true”传递给json_decode时,您告诉它它是一个关联数组。但是你真的想要一个数组阵列。

我确信如果您使用JSON.stringify打印到您的日志,您将获得正确的数据,除了外括号将是“{..}”。

答案 1 :(得分:-1)

我已经尝试执行下面的代码片段来解码上面指定的json内容,它对我来说很好。

<?php
               $a=array(array("a1","a2","a3","a4"),array("b1","b2","b3","b4"),array("c1","c2","c3","c4"));
               $json_content=json_encode($a);
              $json_array=json_decode($json_content,true);
               echo '<pre>';
                print_r($json_array);
?>