2017-04-23 53 views
3

我使用json_decode Php函數來獲取JSON國家數據數組。使用JSON數組中的Php如何根據另一個關聯值檢索項目的值?

{ 
    "Countries": 
    [ 
     { 
      "Code": "AD", 
      "Name": "Andorre" 
     }, 
     { 
      "Code": "AE", 
      "Name": "Émirats Arabes Unis" 
     }, 
     { 
      "Code": "AF", 
      "Name": "Afghanistan" 
     }, 
     { 
      "Code": "AG", 
      "Name": "Antigua-Et-Barbuda" 
     }, 

如果我要檢索的第1個要素的代碼中,我可以這樣做:

$result = json_decode($sXML); 

$final = $result->Countries[0]->Name; 

而且$final將有「安道爾」的價值。 但是,如果我想使用其相應的代碼檢索相同的值'Andorre',該怎麼辦?

是否可以做到這一點? 我知道json_function()有一個選項來獲得關聯數組而不是JSON數組,但是如何使用它來使用其代碼獲取值「Andorre」?

謝謝

+0

就在JSON字符串解碼成一個數組,循環,並那麼只需檢查他的「代碼」是否等於「安道爾」,如果它是「N」 ame'。 – Rizier123

回答

0

這裏我們使用了兩個功能實現這一array_columnarray_combine檢索預期的輸出。

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$string='{ 
    "Countries": 
    [ 
     { 
      "Code": "AD", 
      "Name": "Andorre" 
     }, 
     { 
      "Code": "AE", 
      "Name": "Émirats Arabes Unis" 
     }, 
     { 
      "Code": "AF", 
      "Name": "Afghanistan" 
     }, 
     { 
      "Code": "AG", 
      "Name": "Antigua-Et-Barbuda" 
     } 
    ] 
    }'; 
$array=json_decode($string,true); 
$codes= array_column($array["Countries"], "Code");//Retrieving column code 
$names= array_column($array["Countries"], "Name");//Retrieving column name 
$data= array_combine($codes, $names); //combining array with code as keys and names as values. 
print_r($data);` 

輸出:

Array 
(
    [AD] => Andorre 
    [AE] => Émirats Arabes Unis 
    [AF] => Afghanistan 
    [AG] => Antigua-Et-Barbuda 
) 
2
<?php 

$s = '{ 
    "Countries": 
    [ 
     { 
      "Code": "AD", 
      "Name": "Andorre" 
     }, 
     { 
      "Code": "AE", 
      "Name": "Émirats Arabes Unis" 
     }, 
     { 
      "Code": "AF", 
      "Name": "Afghanistan" 
     }, 
     { 
      "Code": "AG", 
      "Name": "Antigua-Et-Barbuda" 
     } 
    ] 
}'; 

$arr = json_decode($s, true); 
print_r(array_column($arr['Countries'], "Name", "Code")); 

?> 

產生

Array 
(
    [AD] => Andorre 
    [AE] => Émirats Arabes Unis 
    [AF] => Afghanistan 
    [AG] => Antigua-Et-Barbuda 
) 
0

我想你可以使用類似:

function search_json($obj, $field, $value) { 
    foreach($obj as $item) { 
     foreach($item as $child) { 
      if(isset($child->$field) && $child->$field == $value) { 
       return $child->Name; 
      } 
     } 
    } 
    return null; 
} 

print_r(search_json($result, "Code", "AD")); 
# Andorre 
相關問題