2017-12-03 137 views
0

我需要在JSON在JSON中查找字符串? [PHP]

找到

查找名稱和結果表明 年齡JSON $海峽

{ 
「ID": { 
「1": { 
「name": A, 
「age": 「16" 
}, 
「2": { 
「name": B, 
「age": 「17" 
}, 
} 
} 

我嘗試把$海峽與名稱和需要導致

輸出年齡

eg

輸入A 輸出16

我的代碼是

$str = ‘A’; 
$data = json_decode(file_get_contents('inJSON')); 

foreach($data as $item) { 
foreach($item->ID as $ID) { 
if(ID->name == $str) { 
echo age; 
break; 
} 
} 
} 

沒有工作

PS。對不起,我的英語不好。

+0

請修改您的代碼以使其格式化,並更清楚地說明哪些代碼不適用。你想要它做什麼?它目前在做什麼?謝謝。 –

+0

[我如何從JSON提取數據到PHP?](https://stackoverflow.com/questions/29308898/how-do-i-extract-data-from-json-with-php) – localheinz

回答

0

你有無效的JSON(無效的字符串引用,尾隨逗號),你的數據遍歷和變量引用有問題(你錯過了前面的美元符號)。

<?php 
$json = <<<JSON 
{ 
    "ID": { 
     "1": { 
      "name": "A", 
      "age": "16" 
     }, 
     "2": { 
      "name": "B", 
      "age": "17" 
     } 
    } 
} 
JSON; 

$data = json_decode($json); 

$getAgeByName = function ($name) use ($data) { 
    foreach($data->ID as $person) { 
     if($person->name == $name) { 
      return $person->age; 
     } 
    } 
}; 

var_dump($getAgeByName('A')); 
var_dump($getAgeByName('B')); 
var_dump($getAgeByName('C')); 

輸出:

string(2) "16" 
string(2) "17" 
NULL 

提示:

檢查json_decode的回報。如果返回NULL,則無法解碼JSON,或者編碼數據比遞歸限制更深。

如果您更願意使用陣列,請將json_decodetrue作爲第二個參數。