使用json_解码将数组字符串转换为PHP时遇到的问题
我正在测试json_decode函数,该函数将UTF-8字符串转换为php变量 我不明白为什么这不起作用使用json_解码将数组字符串转换为PHP时遇到的问题,php,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='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函数时,为什么会有如此大的不同呢?数组(“Jack”、“Jill”、“John”)
是数组的PHP符号,但JSON无效。巧合的是,[“Jack”、“Jill”、“John”]
在PHP和JSON中都有效
您不能使用来评估PHP语法;这就是该功能的用途:
eval('$names = array("Jack","Jill","John");');
echo $names[0]; // Jack
不过,如果可以的话,我会像避免瘟疫一样避免它——请参阅其文档中的注意事项。JSON代表JavaScript对象表示法,而
array()
是PHP创建新数组的标准方法。没错,最近PHP也支持[]
表示法,但是请检查一下,看看组成有效json的规则是什么
代码不起作用的另一个原因是
echo echo
“我正在测试将UTF-8字符串转换为php变量的json_解码函数”您的行//这不起作用
有不匹配的括号类型[…)
,因此它当然不起作用。我假设您的意思是[…]
。在任何情况下,您试图在该行中使用的语法仅在PHP5.4及更高版本中可用,因此如果您使用的是5.3或更早版本,则不会起作用。'array(“Jack”、“Jill”、“John”)
不是JSON。请参阅:echo
??这并非巧合,[]
是有效的PHP。引入短数组语法是因为JSON的流行……此外,您使用eval
既有害又错误(eval
应该包含一个返回语句),或者assignment@Elias请看一看文档,这不是必需的:“eval()除非在求值代码中调用return,否则返回NULL,在这种情况下,传递给return的值返回“是的,现在您对eval
的使用将起作用,但最初,您的代码是$convert\u names=eval($names)
,它会将null赋值给$convert_names
,这是错误的。另外:使用eval
,就像你在类/函数中所做的那样,会在全局命名空间中创建$names
,而不是在正确的范围内,因此:它仍然是邪恶的,你不应该显示这样危险的示例代码!事实上,我确实编辑了-道歉老实说,我从未使用过eval,但我知道它的存在,所以我认为它值得作为一个例子提供——只要它有足够的警告。