繁体   English   中英

如何用PHP对数据进行json编码?

[英]How to json encode this data in PHP?

我的控制器中有以下代码:

$regions = $this->signup_m->get_regions($country_id);
foreach ($regions as $key => $region) {
     echo "<option value='$key'>$region</option>";
}

它是由ajax请求调用的。 与其在控制器中构建HTML,不如返回一个json对象,从中可以构建下拉选项。 如何以json格式发送此数据?

我了解了PHP的json_encode函数,当我需要发送回单个对象时可以使用它,但是在这种情况下,我认为我需要发送回多个对象(每个下拉选项一个)。 因此,由于所有内容都在一个循环中,因此不确定如何进行操作。

在PHP中:

$regions = $this->signup_m->get_regions($country_id);
$jsonObj = array();
foreach ($regions as $key => $region) {
    $jsonObj[] = (object) array('value'=>$key, 'test'=>$region);
}
echo json_encode($jsonObj);

在javascript中,您将收到一个json对象。 如果您使用的是jquery,那么您就已经准备就绪,只需遍历数组即可。 否则,您将不得不解析/评估它,然后遍历它

您可以使用更少的空间来做到这一点,如下所示:

$keysRegionsJSON = json_encode($this->signup_m->get_regions($country_id));

然后,您将按以下方式使用它:

$keysRegions = json_decode($keysRegionsJSON);
foreach ($keysRegions as $key => $region) {
    echo '<option value="' . $key . '">' . $region . '</option>';
}

普通JS中的相同之处:

for (key in keysRegionsJS) {
    document.write('<option value="' + key + '"> + keysRegionsJS[key] + '</option>';
}

您可以在没有json_encode的情况下执行以下操作

$json="{";
$count=0;
$regions = $this->signup_m->get_regions($country_id);
foreach ($regions as $key => $region) {
    if($count>0){$json.=",";}
    $json.="\"".$key."\":\"".$region."\"";
    $count++;
}
$json.="}";
echo $json;

然后您将在JavaScript中使用for in循环将其转换回选项

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM