0

我遇到了这个大问题,但我找不到解决方案。我从 API 中将这个 Json 返回给我,但我真的不知道如何通过使用他的 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'];

但我不能真正完成这项工作......提前谢谢你!

4

3 回答 3

2

您必须遍历数组检查 id,找到后,检索名称。像这样的东西:

function getHeroName($data, $id) {
    for ($i = 0; $i < count($data); $i++) {
        if ($data[$i]['id'] == $id) {
            return $data[$i]['name'];
        }
    }
}
于 2012-12-02T14:41:38.777 回答
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

于 2012-12-02T14:37:14.157 回答
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'];    
    }
}
于 2012-12-02T14:44:30.097 回答