从 json 声明分隔变量



我有一个JSON格式如下:

$myresult = '{"promoter_name":[],"country":["Hong Kong"],"download":["Yes"],"download_date_range":["20161201","20161215"],"first_login_date_range":[],"last_login_date_range":[],"login_frequency":[]}'

我想使用 PHP 打印单个值,例如:

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

这是数组方法。如果使用对象方法代码将是这样的;

$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

首先将字符串解码为

$arrResult = json_decode($result, true);

然后使用索引访问值

这样使用json_decodejson_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
?>

  <?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,true);
foreach($res as $key=>$value)
{
        foreach($value as $k=>$v){
        $data[$key] = $v;
       }
} 
extract($data);
echo $country;//outputs Hong Kong so on
?>

<?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,true);
foreach($res as $key=>$value)
{
        foreach($value as $k=>$v){
        echo $key."='".$v."'<br/>";
       }
} 
?>

输出:

country='Hong Kong'
download='Yes'
download_date_range='20161201'
download_date_range='20161215'

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

$json = '{"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

最新更新