-2

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

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

$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 函数时会如此不同

4

2 回答 2

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

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

于 2013-09-16T14:33:31.883 回答
1

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

您的代码不起作用的另一个原因是echo echo<-- 这是不对的。
另外:$names=["Jack","Jill","John")确实不起作用,因为您的左括号没有遇到 closnig 括号,而是右括号,但从 PHP 5.4开始$names = ['Jack']; 可以使用。阅读手册

于 2013-09-16T14:36:07.650 回答