我怎样才能获得带有ID的名字?或者排序?

时间:2012-12-02 14:31:19

标签: php json get decode

我遇到了这个大问题,我找不到解决方案.. 我让这个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'];

但我无法真正做到这一点...... 提前谢谢!

3 个答案:

答案 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'];    
    }
}