PHP / JS:将PHP数组转换为JavaScript数组

时间:2014-08-02 06:50:33

标签: javascript php arrays loops

我有一个PHP数组($cloud),使用json_encode后,在打印时会返回以下内容: 该数组现在包含正确的内容,但看起来与我需要的不同,这可能是为什么在我的JS中使用它不起作用。

当前数组如下(缩短):

Array ( [0] => Array ( [text] => item 1 [weight] => 20 ) [1] => Array ( [text] => item 2 [weight] => 19 ) [2] => Array ( [text] => item 3 [weight] => 18 ) [3] => Array ( [text] => item 4 [weight] => 17 ) [4] => Array ( [text] => item 5 [weight] => 16 ) )

有没有办法可以将它转换为一个JavaScript数组,看起来像下面那个我需要的功能呢?

var word_array = [
    {text: "item 1", weight: 20},
    {text: "item 2", weight: 19},
    {text: "item 3", weight: 18},
    {text: "item 4", weight: 17},
    {text: "item 5", weight: 16},
];

不幸的是我不能在这里提供更多,因为我不知道如何做到这一点。 我试着简单地将它回显到JS变量中,但这并不起作用,因为格式不是函数所期望的。

非常感谢任何提示,蒂姆。

3 个答案:

答案 0 :(得分:2)

为此你必须编写自己的功能。这个应该有效,但不必:

$json = "[ \n";
foreach($array as $element) {
    $obj = array();
    foreach($element as $key => $val) {
        if(is_numeric($val)) {
            $obj[] = $key.": ".$val;
        } else {
            $obj[] = $key.": \"".$val."\"";
        }
    }
    $json .= "{".implode(", ", $obj)."},\n";
}
$json .= "\n ];";

答案 1 :(得分:1)

$.getJSON('/phpscript.php', function(data){
   var word_array =  data;
})

你永远不应该直接将php代码回复到js中,通过ajax获取它。了解web2.0的概念,这样你就可以在php开发中领先一步,而你的同行仍在使用过时的MVC和其他策略。

服务器端你应该用它来返回你的数组:

die(json_encode($array));

一旦将阵列重新放入js,您将需要学会使用它。 首先,使用控制台日志

进行记录
console.log(word_array);

您应该在浏览器的控制台选项卡中看到一个带有键名/值的对象。

现在您需要使用它。

for(var i = 0; i < word_array.length; i++){

   $('#example').append('<p>'+word_array[i].keyname+'</p>');

}

其中keyname是您要访问的数组的键。

答案 2 :(得分:0)

简单使用此代码

<强> PHP

$arr_ouput = array();
foreach($clould as $arr)
{
    $arr_temp = array();
    foreach($arr as $key=>$val)
    {
        $str2 = $key.':"'.$val.'"';
        $arr_temp[] = $str2;
    }
    $str_temp = '{'.implode(",", $arr_temp).'}';
    $arr_ouput[] = $str_temp;
}
$str = '['.implode(",", $arr_ouput).']';

<强> JS

<script>
var word_array = <?php echo $str;?>;
</script>

<强> WORKING DEMO