我正在测试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函数时它会如此不同
答案 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