【问题标题】:How to loop through an array and add to it in JSON如何遍历数组并在 JSON 中添加到它
【发布时间】:2013-04-21 00:12:12
【问题描述】:

我有一个数组,其中包含我的 sql 数据库中的几个变量。

{"gold":"0","silver":"0","bronze":"0","gdp":"12959563902","population":"3205000","country_name":"Albania"},              {"gold":"1","silver":"0","bronze":"0","gdp":"188681000000","population":"35468000","country_name":"Algeria"}

我有一个名为 $score 的附加变量,它使用数据库中的信息来计算这个分数。我想知道如何循环并将正确的分数添加到数组中的每个国家/地区。

我的原始代码:

$row = $res->fetchRow();
$resGold = $row['gold'];
$resSilver = $row['silver'];
$resBronze = $row['bronze'];
$resGdp = $row['gdp'];
$resPopulation = $row['population'];
$resCountry = $row['country_name'];
$gold_score = ($resGold * $gold_value);
$silver_score = ($resSilver * $silver_value);
$bronze_score = ($resBronze * $bronze_value);
if($population == true){
$score = (($gold_score + $silver_score + $bronze_score)/$resPopulation);
}
else if($gdp == true){
$score = (($gold_score + $silver_score + $bronze_score)/$resGdp);
}
$result = $res->fetchAll();
$result[] = array('score' => $score);
echo json_encode($result);

【问题讨论】:

  • 你需要使用json_decode函数解码你的json字符串。
  • @Rikesh 为什么我想把它放在一起时需要解码?
  • 您需要对其进行解码才能对其值执行任何操作。完成后再次对其进行编码。
  • 因为你必须先把你的 json 字符串变成一个数组,然后才能在上面使用 foreach。
  • 分数与金、银、铜有什么关系?我在 json 中看不到任何 score 字段。

标签: php jquery mysql arrays json


【解决方案1】:

您的代码将是这样的:

$json_data = '{"gold":"0","silver":"0","bronze":"0","gdp":"12959563902","population":"3205000","country_name":"Albania"},
        {"gold":"1","silver":"0","bronze":"0","gdp":"188681000000","population":"35468000","country_name":"Algeria"}';

$countries_info_new = array();
$countries_info = json_decode($json_data);

foreach($countries_info as $country_info){
   $country_info['score'] = Get_country_score($country_info['country_name']);
   $countries_info_new[]=$country_info;
}

$new_json_data = json_encode($countries_info_new);

【讨论】:

  • 我明白了:警告:json_decode() 期望参数 1 是字符串,第 63 行文件中给出的数组 这是 $countries_info = json_decode($json_data);
  • 那它已经解码了,注释掉那行直接使用。此外,使用 print_r 或 var_dump 了解数据的流动方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多