如何在PHP中循环通过JSON对象?
我在PHP中有一个变量如何在PHP中循环通过JSON对象?,php,json,Php,Json,我在PHP中有一个变量$arr。它包含以下数据 这是我的PHP代码 $data = array( 'Request' => 'StockStatus', 'merchant_id' => 'shipm8', 'hash' => '09335f393d4155d9334ed61385712999' ); $url = 'https://ship2you.com/ship2you/'; $c
$arr
。它包含以下数据
这是我的PHP代码
$data = array(
'Request' => 'StockStatus',
'merchant_id' => 'shipm8',
'hash' => '09335f393d4155d9334ed61385712999'
);
$url = 'https://ship2you.com/ship2you/';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
$arr = json_decode($result, true);
foreach ($arr as $value) {
echo $value['packagename'];
}
我想循环一下。我怎样才能做到呢?我尝试使用foreach,但它给了我错误。提前谢谢
json_decode($json, true);
如果第二个参数为true,它将返回数组。如果不是您想要的,请显示您拥有的代码。您必须将
CURL输出字符串解码两次:-
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_PORT, 443);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
$arr = json_decode($result);
foreach ($arr as $arr_item) {
echo $arr_item->user_id;
}
$arr = json_decode(json_decode($result, true),true);
foreach ($arr as $value) {
echo "<pre/>";print_r($value['packagename']);
}
$arr=json\u decode(json\u decode($result,true),true);
foreach($arr作为$value){
echo”“;print_r($value['packagename']);
}
注:-@Xatenev提到了正确的事情:-
json已转义引号。当带有转义引号的json被传递到json\u decode()
时,它只会删除所有转义序列。再次调用json_decode()
时,它会正确地对其进行解码显示您是如何使用foreach的?同时发布准确的错误消息。可能是@Anant的重复我已经粘贴了我的php代码。来吧,发布代码!现在,您添加了一个片段,但仍然不是您提到的foreach…为什么我要做两次呢?@AliZia似乎是双重编码的,或者可以说嵌套编码的字符串来自CURL
requests我希望我的API提供程序会提到它。非常感谢。@Anant@AliZia这个json已经转义了引号。当带有转义引号的json被传递到json\u decode()
时,它只会删除所有转义序列。再次调用json\u decode()
时,它会正确解码。@AliZia很高兴能帮助您。干杯:):)