将Javascript对象转换为PHP数组

7

我通过表单提交将这个Javascript数组发送到PHP页面中:{"1":"2","2":"2","3":"2","4":"2"}

现在,我想把这个数组转换成PHP数组,像这样:

$cars = array("Volvo", "BMW", "Toyota");

因此,这是我尝试的代码:

$phparray = str_replace(':', ',', $_POST["questionandanswers"]); // Remove : and replace it with ,
$phparray = str_replace('}', '', $phparray); // Remove }
$phparray = str_replace('{', '', $phparray); // Remove {
echo '<br/>';
echo $phparray; // Output of this is: "1","2","2","2","3","2","4","2"



$questionandanswers = array($phparray); // Now convert it into PHP array

但是它不起作用。看起来我不能在这里放置$phparray变量 array($phparray) 但是,如果我手动放置$phparray的输出结果而不是将它放置在array($phparray)中,那么就可以正常工作,例如:array("1","2","2","2","3","2","4","2") 有什么解决方案吗?

那不是“Javascript数组”,那是JSON - Andreas
1
json_decode($json) - Progrock
2个回答

8

看起来您的表单将一个JSON对象提交到服务器,所以请使用json_decode函数,将第二个参数设置为true,以将其转换为数组。

$php_array=  json_decode($_POST["questionandanswers"],true)

谢谢,但问题在于对象名称并不总是按顺序排列的:它也可能像 Array ( [3] => 0 [6] => 0 [7] => 0 [11] => 0 ) 这样。那么,如何访问该对象,而不知道它的名称? - Josh Poor
1
根据您的条件,只需使用foreach循环和if语句即可。 - Osama
1
顺便说一下,你拼错了json_decode。 - Josh Poor

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接