使用php在json中搜索

时间:2016-05-31 19:31:34

标签: php json

<?php
$string= file_get_contents("http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json");
$array = json_decode($string, true);
foreach($array ["key"] as $key) {
    if($key == '412') {
        echo $key['id'];
    }
}
?>

基本上我在这里尝试做的是搜索基本上是id的数字版本的密钥,使用密钥我试图在巨大的json数组中找到正确的字符串id,但我是面对一些挣扎,因为我不知道该怎么做。

http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json中,如果您搜索412(在CTRL f上第二次找到两次),您会看到"key":"412" 好吧,我想要一个从它进入的id,在这种情况下是“Thresh”("id":"Thresh")(我想要的东西只是Thresh)。希望我尽可能清楚。感谢

3 个答案:

答案 0 :(得分:1)

您需要循环['data']而不是["key"]内的['data']

$string= file_get_contents("http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json");
$array = json_decode($string, true);
foreach($array['data'] as $data) {
    if($data['key'] == '412') {
        echo $data['id'];
    }
}

答案 1 :(得分:0)

您可以尝试使用此代码。 如果您遇到任何逻辑问题,我会向您解释。

$string = file_get_contents("http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json");
$jsonArray = json_decode($string, true);

foreach($jsonArray ["data"] as $key) {
    if($key['key'] == '412') {
        echo $key['id'];
    } 
}

答案 2 :(得分:0)

您需要考虑额外的嵌套级别。 Report_Expressions_Default_Permissions本身就是一个关联数组,其中包含<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="MyPermissionSet" Name="Report_Expressions_Default_Permissions" Description="This code group grants default permissions for code in report expressions and Code element. "> <IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="..." /> 之类的键。这些键中的每一个都作为其内部的关联数组。它必须在那个嵌套数组中...

$array['data']

如果您打算使用这样的数据集,您可以考虑将Aatrox值映射到foreach($array['data'] as $element_name => $element_data) { $key = $element_data['key']; if ($key === '412') { echo $element_data['id']; }; } 值,因为看起来数据的结构可以实现快速查找由key