2016-09-05 2 views
2

Я пытаюсь декодировать данные JSON для PHP, а затем выводить их на сайт. Если у меня есть следующие:json, php - строка вывода из массива

{ 
    "name": "josh", 
    "type": "human" 
{ 

Я могу это сделать (в PHP), чтобы отобразить или выход мой type:

$file = "path"; 
$json = json_decode($file); 

echo $json["type"]; //human 

Так что, если у меня есть следующие:

{ 
    "name": "josh", 
    "type": "human", 
    "friends": [ 
    { 
     "name": "ben", 
     "type": "robot" 
    }, 
    { 
     "name": "tom", 
     "type": "alien" 
    } 
    ], 
    "img": "img/path" 
} 

Как я могу вывести то, что type мой друг ben есть?

+0

Вам рекомендуется использовать 'jq' что лучше всего подходит для таких работ. Вы можете проверить мой [\ [другой ответ \]] (http://stackoverflow.com/a/39233446/1620779) по аналогичному вопросу. – sjsam

ответ

2

Используйте цикл вроде Еогеасп и сделать что-то вроде следующего:

//specify the name of the friend like this: 
$name = "ben"; 

$friends = $json["friends"]; 

//loop through the array of friends; 
foreach($friends as $friend) { 
    if ($friend["name"] == $name) echo $friend["type"]; 
} 
0

Чтобы получить декодированные данные в виде массива вы бы снабжали true в качестве второго аргумента json_decode в противном случае он будет использовать по умолчанию, который object нотации. Вы можете легко создать функцию, чтобы сократить процесс, когда вам нужно найти конкретного пользователя

$data='{ 
    "name": "josh", 
    "type": "human", 
    "friends": [ 
    { 
     "name": "ben", 
     "type": "robot" 
    }, 
    { 
     "name": "tom", 
     "type": "alien" 
    } 
    ], 
    "img": "img/path" 
}'; 

$json=json_decode($data); 
$friends=$json->friends; 
foreach($friends as $friend){ 
    if($friend->name=='ben')echo $friend->type; 
} 

function finduser($obj,$name){ 
    foreach($obj as $friend){ 
     if($friend->name==$name)return $friend->type; 
    } 
} 

echo 'Tom is a '.finduser($friends,'tom'); 
0

попробовать это,

$friend_name = "ben"; 
$json=json_decode($data); 
$friends=$json->friends; 
foreach($friends as $val){ 
    if($friend_name == $val->name) 
    { 
     echo "name = ".$val->name; 
     echo "type = ".$val->type; 
    }  
} 

DEMO

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