繁体   English   中英

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

[英]PHP / JS: convert PHP array to JavaScript array

我有一个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变量中,但这不起作用,因为格式不是函数所期望的。

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

为此你必须编写自己的函数。 这个应该工作,但不必:

$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 ];";
$.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是您要访问的数组的键。

简单地使用此代码

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>

工作演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM