使用json_decode将数组字符串转换为PHP时遇到的问题

时间:2013-09-16 14:32:52

标签: php

我正在测试json_decode函数,该函数将UTF-8字符串转换为php变量

我不明白为什么这不起作用

$names='array("Jack","Jill","John")'
$convert_names=json_decode($names);
echo echo $convert_names[0];

但这有效

$names='["Jack","Jill","John"]'
$convert_names=json_decode($names);
echo echo $convert_names[0];

我了解到创建PHP数组的方法是

$names=array("Jack","Jill","John") // this works
$names=["Jack","Jill","John") //this does not work

为什么在涉及JSON_DECODE函数时它会如此不同

2 个答案:

答案 0 :(得分:1)

array("Jack","Jill","John")是数组的PHP表示法,但是JSON无效。巧合的是,["Jack","Jill","John"]在PHP和JSON中均有效。

您不能使用json_decode()来评估PHP语法;这就是eval()函数的用途:

eval('$names = array("Jack","Jill","John");');
echo $names[0]; // Jack

但是,如果可以的话,我会像瘟疫一样避免它 - 请参阅其文档中的警告。

答案 1 :(得分:1)

JSON代表JavaScript Object Notation,而array();是PHP创建新数组的标准方式。是的,最近PHP也支持[]表示法,但请检查json.org,看看构成有效 json的规则是什么。

您的代码无效的另一个原因是echo echo< - 这是不对的 另外:$names=["Jack","Jill","John")确实无法正常工作,因为你打开括号不会遇到一个闭包括号,而是一个右括号,但从PHP 5.4开始$names = ['Jack']; 工作。阅读the manual