我有一个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变量中,但这并不起作用,因为格式不是函数所期望的。
非常感谢任何提示,蒂姆。
答案 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 强>