2013-04-26 3 views
-1

У меня есть массив, содержащий несколько переменных из моей базы данных sql.Как петля через массив и добавить к нему в JSON

{"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); 
+2

Вы должны декодировать строку JSON с помощью 'json_decode' функции. – Rikesh

+0

@Rikesh Зачем мне декодировать его, когда я хочу собрать его вместе? –

+1

Вам необходимо декодировать его для выполнения любой операции над его значением. И закодируйте его снова, как только вы это сделаете. – Rikesh

ответ

0

Ваш код будет выглядеть примерно так:

$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); 
+0

Я получаю это: * Warning: json_decode() ожидает, что параметр 1 будет строкой, массив указан в файле в строке 63 *, где находится $ countries_info = json_decode ($ json_data); –

+0

Затем он уже декодирован, закомментируйте эту строку и используйте ее напрямую. Кроме того, используйте print_r или var_dump, чтобы понять, как течет поток данных. – Sumoanand

+0

Я добавил свой оригинальный код выше –

Смежные вопросы