2017-07-02 86 views
-5

我有这个数据的JSON:JSON KEY VALUE LOOP PHP

$data = "meta_data":[ 
{ 
    "id":2279, 
    "key":"codice_fiscale", 
    "value":"gege" 
}, 
{ 
    "id":2280, 
    "key":"numero_tessera_titolare", 
    "value":"gre" 
}, 
{ 
    "id":2281, 
    "key":"classe_tessera_titolare", 
    "value":"gre" 
}, 
{ 
    "id":2282, 
    "key":"tratta_da", 
    "value":"gre" 
}, 
{ 
    "id":2283, 
    "key":"tratta_a", 
    "value":"grge" 
}, 
{ 
    "id":2284, 
    "key":"studente", 
    "value":"studente" 
}]; 

我需要循环所有“钥匙”,当我发现我所需要的密钥(在这种情况下,“STUDENTE”)我需要获取存储在“值”中的值。

我怎样才能做到这一点在PHP?

编辑

我尝试这样做:

foreach($data as $row){ 
    if($row->key=='studente'){ 
     $var = $row->value; 
    } 
} 
+0

[用PHP解析JSON文件(的可能的复制https://stackoverflow.com/questions/4343596/parsing-json -file与 - PHP) – axierjhtjz

回答

0

首先,$数据是不是一个有效的JSON。您可以使用json_decode()来获取您的json字符串的php数组表示形式。然后遍历数组。

实施例:

$json = '{ 
"meta_data": [ 
{ 
    "id": 2279, 
    "key": "codice_fiscale", 
    "value": "gege" 
}, 
// other items... 
{ 
    "id": 2283, 
    "key": "tratta_a", 
    "value": "grge" 
}, 
{ 
    "id": 2284, 
    "key": "studente", 
    "value": "studente" 
} 
]}'; 

$data = json_decode($json, true); 
//var_dump($data); 

foreach($data['meta_data'] as $key => $item) { 
    if (isset($item['value']) && $item['value'] == 'studente') { 
     var_dump($item); 
    } 
} 
1

最好/最有效的方式是写以break foreach循环。

代码:(Demo

$json = '{ 
"meta_data": [ 
{ 
    "id": 2279, 
    "key": "codice_fiscale", 
    "value": "gege" 
}, 
{ 
    "id": 2283, 
    "key": "tratta_a", 
    "value": "grge" 
}, 
{ 
    "id": 2284, 
    "key": "studente", 
    "value": "studente" 
} 
]}'; 

$data = json_decode($json, true); 
$search='studente'; 

$found=false; 
foreach($data['meta_data'] as $d){ 
    if($d['key']==$search){ 
     $found=$d['value']; 
     break; 
    } 
} 
echo $found?$found:"$search not found"; 

输出:

studente 
相关问题