问题:
我让这个数组通过POST字段
{"name":"sample","email":"a@sample.co.uk","comments":"test"}
我想将它拆开并通过数组运行,因此最终结果将是
name sample
email a@sample.co.uk
comments test
我试过的是:
$a = $_POST['rawRequest'];
$a = json_encode($a);
foreach ($a as $k => $v) {
echo "\$a[$k] => $v <br />";
}
但它没有做任何事情,但是当我用这个变量测试它时(使用POST)
$a = array("name" => 1,"email" => 2,"sample" => 3);
它按预期工作。
试图了解正在发生的事情
很明显,因为我在这里处理的是两种不同类型的数组。然而,在无休止的谷歌之后,我无法找到解释差异的任何地方(基本上下面的数组)。因此,我的相对新手的头脑能够理解发生了什么以及为什么它是错误的
{"name"=>"sample","email"=>"a@sample.co.uk"=>"comments":"test"}
{"name":"sample","email":"a@sample.co.uk","comments":"test"}
答案 0 :(得分:2)
$ aa不是数组,是JSON:
$a = $_POST['rawRequest'];
$aa = json_encode($a);
因此,你不能在$ aa中使用foreach。
答案 1 :(得分:1)
如果要将json字符串解码为数组而不是对象,请使用“Array”标志。
$array = json_decode($json_string, true);
答案 2 :(得分:1)
尝试
$data = '{"name":"sample","email":"a@sample.co.uk","comments":"test"}';
$json = json_decode($data,true);
foreach($json as $key=>$val){
echo $key." - ".$val;
echo "<br />";
}
检查输出
http://phpfiddle.org/main/code/ytn-kp0
你已经完成了
echo "\$a[$k] => $v <br />";
这将输出为
$a[name] => sample
“$ a”将被视为字符串
您可以按照自己的方式进行,但需要将回声更改为
echo $k ."=>" .$v. "<br />";
由于您使用foreach循环数组,$ k将包含数组的键,$ v将是值!!
答案 3 :(得分:0)
我让Json对编码数组进行解码,并通过下面的foreach将其循环,并附有评论,解释每个部分的作用。
/* The Json encoded array.*/
$json = '{"name":"sample","email":"a@sample.co.uk","comments":"test"}';
/* Decode the Json (back to a PHP array) */
$decode = json_decode($json, true);
/* Loop through the keys and values of the array */
foreach ($decode as $k => $v) {
$new_string .= $k . ' | ' . $v . '<br/>';
}
/* Show the result on the page */
echo $new_string;
以上代码返回以下内容;
name | sample
email | a@sample.co.uk
comments | test
如果要逐个访问数组值,还可以使用以下代码。
/* The Json encoded array.*/
$json = '{"name":"sample","email":"a@sample.co.uk","comments":"test"}';
/* Decode the Json (back to a PHP array) */
$decode = json_decode($json, true);
echo $decode['name'];//returns sample
echo $decode['email'];//returns a@sample.co.uk
echo $decode['comments'];//returns test