Split不适用于JavaScript中的json_encode

时间:2014-04-04 10:19:13

标签: javascript php arrays split json

我在php中有一个像这样的数组:

$array_php = (1,2,3,4,5);

在JavaScript中我做:

var obj = <?php echo json_encode($array_php); ?>;

如果我警告(obj); 我可以毫无问题地获得内容:1,2,3,4,5

如果我这样做:

var elem = obj.split(',');

这失败了。如果我做警报(elem [1]),例如我什么也得不到。并且行var elem = ...失败。

如果我在没有json_enconde的情况下创建数组工作正常,但我需要访问此对象。

我该怎么办? 谢谢!

2 个答案:

答案 0 :(得分:3)

alert(obj)将数组转换为字符串。 JavaScript中的数组到字符串转换基本上是使用this.join(",")完成的(不完全,但足够接近)。

你不需要对obj做任何事情就可以使它成为一个数组,它一个数组!因此,只需访问alert(obj[1])即可获得2

答案 1 :(得分:1)

那不是PHP数组。你的意思是array(1, 2, 3, 4, 5);

像这样使用json_encode会创建一个包含JavaScript对象或数组文字的字符串,但由于您将其直接输出到JavaScript中,因此它不是字符串,而是已经是JavaScript中的数组。查看生成的源代码。它将是:

var obj = [1, 2, 3, 4, 5];

var obj = "[1, 2, 3, 4, 5]";

也不是

var obj = "1, 2, 3, 4, 5";

所以你不需要拆分它(没有要拆分的字符串)。只需直接访问对象(或本例中的数组):

alert(obj[0]); // Shows 1

提示:不要使用alert()进行调试。请改用console.log()并查看控制台。在那里,它更容易看出它是一个数组,而不是一个字符串。