我遇到了这个大问题,我找不到解决方案.. 我让这个Json从API返回给我,但我真的不知道如何通过使用他的id获得英雄的名字?
[
{ "id":0, "name":"N/A" },
{ "id":1, "name":"John" },
{ "id":2, "name":"Doom" }
]
尝试过类似的事情:
$data = json_decode($json,true);
$id = $data[0]['id'];
$name = $data[0][$id]['name'];
但我无法真正做到这一点...... 提前谢谢!
答案 0 :(得分:2)
你必须在数组中循环检查id,当它找到时,检索名称。这样的事情:
function getHeroName($data, $id) {
for ($i = 0; $i < count($data); $i++) {
if ($data[$i]['id'] == $id) {
return $data[$i]['name'];
}
}
}
答案 1 :(得分:0)
在您的示例中,您希望在JSON数组中获得索引'0',索引0将是:
{ "id":0, "name":"N/A" }
此索引0现在是一个键值对,因此您只需调用
即可$id = $data[0]['id'];
$name = $data[0]['name'];
如果你想对数组中的所有元素进行操作,那么可以使用for循环或foreach循环。
要获取ID的名称,您必须执行以下操作:
function name_for_id($data, $id) {
foreach ($data as $value) {
if ($value['id'] == $id)
return $value['name'];
}
}
有关完整代码示例,请参阅http://pastebin.com/Rtq3NbQd
答案 2 :(得分:0)
工作示例
<?php
$json = '[{"id":0, "name":"N/A" },{ "id":1, "name":"John" },{ "id":2, "name":"Doom" }]';
$data = json_decode($json, true);
$heroId = 1;
foreach($data as $hero) {
if($hero['id'] == $heroId) {
echo 'Hero Name :'. $hero['name'];
}
}