我有一个二维php数组,$ phpar,其中两个维度都被索引(0,1,2,...),所有值都是纯文本。在JavaScript函数中,我想将此数组转换为二维JavaScript数组。我知道以下代码不起作用,但它说明了我想要做的事情。
jsfunction() {
var jsarray = new Array();
jsarray = <?php json_encode($phpar); ?>;
}
如果返回的值不是常规的js数组,就像JSON字符串一样,我需要一些帮助将其解析为我想要的内容。
答案 0 :(得分:1)
我不确定你的问题在哪里......但json_encode
的基本操作看起来像:
<script type="text/javascript">
var jsarray = <?php echo json_encode($phpar); ?>;
</script>
坦率地说,我不明白为什么其他人建议将兼容javascript的对象/数组投入字符串,更糟糕的是他们这样做的方式是错误。如果你想要一个JSON对象字符串,这是正确的方法:
<script type="text/javascript">
var jsarray_string = <?php echo json_encode(json_encode($phpar)); ?>;
// ^ ^------ php array to js array
// '------------------ php string to js string
</script>
顺便说一句,可以像数组一样访问javascript对象。例如:
var myArray = {1: 'hi', 2: 'bye'};
alert(myArray[2]); // this works!
唯一的区别是myArray实际上不是一个javascript数组,例如,myArray.constructor
不是Array()
。
答案 1 :(得分:0)
在应用程序的功能方面,您实际上在这里尝试了什么?
PHP是一种后端语言,JavaScript是一种前端语言。如果您需要前端从后端检索对象以在JavaScript中使用,则应使用Ajax而不是将PHP代码放入JavaScript中。
您的Ajax方法将使用MVC样式的URL('/ mycontroller / mymethod')调用相关的PHP方法。 PHP方法应该使用关联数组,因为JSON对象是键值对。你应该在返回之前对数组进行json_encode。
以下是一些示例PHP代码:
<?php #foo.php
public function bar() {
$array = ('first-name' => 'John', 'last-name' => 'Doe');
return json_encode($array);
}
在前端,您的JSON对象将包含与关联数组相同的键值对:
var getBar = function() {
$.get('/foo/bar', function(data) {
var string = 'My name is ' + data.first-name + ' ' + data.last-name';
alert(string);
}, json);
};