Php 从json声明seperate变量

Php 从json声明seperate变量,php,json,variables,Php,Json,Variables,我有一个JSON格式,如下所示: $myresult = '{"promoter_name":[],"country":["Hong Kong"],"download":["Yes"],"download_date_range":["20161201","20161215"],"first_login_date_range":[],"last_login_date_range":[],"login_frequency":[]}' extract(json_decode($json, true)

我有一个JSON格式,如下所示:

$myresult = '{"promoter_name":[],"country":["Hong Kong"],"download":["Yes"],"download_date_range":["20161201","20161215"],"first_login_date_range":[],"last_login_date_range":[],"login_frequency":[]}'
extract(json_decode($json, true));

echo $country[0];             // Hong Kong
echo $download[0];            // Yes
echo $download_date_range[0]; // 20161201
echo $download_date_range[1]; // 20161215
我想使用PHP打印单个值,例如:

$download = 'Yes';
$country  = "Hong Kong";

首先将字符串解码为

$arrResult = json_decode($result, true);
然后使用索引访问值

像这样使用json\u解码。json_decode将json转换为对象,然后使用箭头操作符访问每个成员

<?php
$result = '{"promoter_name":[],"country":["Hong Kong"],"download":["Yes"],"download_date_range":["20161201","20161215"],"first_login_date_range":[],"last_login_date_range":[],"login_frequency":[]}';
$res = json_decode($result);

echo $res->country[0];//and so on

?>

JSON字符串中的所有值都是数组:

$json = '{"promoter_name":[],"country":["Hong Kong"],"download":["Yes"],"download_date_range":["20161201","20161215"],"first_login_date_range":[],"last_login_date_range":[],"login_frequency":[]}';
您可以执行以下操作:

$myresult = '{"promoter_name":[],"country":["Hong Kong"],"download":["Yes"],"download_date_range":["20161201","20161215"],"first_login_date_range":[],"last_login_date_range":[],"login_frequency":[]}'
extract(json_decode($json, true));

echo $country[0];             // Hong Kong
echo $download[0];            // Yes
echo $download_date_range[0]; // 20161201
echo $download_date_range[1]; // 20161215
或者,您可以筛选出单个值:

foreach(json_decode($json, true) as $key => $value){
  if(is_array($value) && count($value) == 1){
    $data[$key] = $value[0];
  } elseif(empty($value)) {
    $data[$key] = null;
  } else {
    $data[$key] = $value;
  }
}

extract($data);

echo $country;                // Hong Kong
echo $download;               // Yes
echo $download_date_range[0]; // 20161201
echo $download_date_range[1]; // 20161215
这是数组方法。如果您使用的对象方法代码将是这样的

$arr = json_decode($result);
$country = $arr->country[0];
$download = $arr->download[0];
或者使用动态变量

foreach($arr as $k=>$v){
  if($v != []){
    ${$k} = $v[0];
   }
}
echo $country;
echo $download

. 现在echo$array['download'][0]。。。。。诸如此类others@Haj穆罕默德A看到了你想要的答案。@HikmatSijapati我重新格式化了问题,而不是问题本身。我还在读:我要回显个人价值观的编辑答案。见答案@Haj Mohammad A
$arr = json_decode($result);
$country = $arr->country[0];
$download = $arr->download[0];
foreach($arr as $k=>$v){
  if($v != []){
    ${$k} = $v[0];
   }
}
echo $country;
echo $download