2016-05-31 2 views
-3
<?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의 숫자 버전 인 키를 검색하는 것입니다. 올바른 문자열 ID를 찾으려고 노력하고 있습니다. 거대한 json 배열,하지만 난 어떻게 해야할지 모르겠다 고 일부 투쟁에 직면하고있어. 당신이 "key":"412" 잘 내가이 경우 "임계점"입니다 최대 그것에서 항목 인 ID를 원하는 볼 수json 내에서 PHP를 사용하여 검색

당신이 (CTRL f를 두 번째 발견에 두 번) (412)을 검색하는 경우 http://ddragon.leagueoflegends.com/cdn/5.23.1/data/en_US/champion.json에서

("id":"Thresh") (내가 원하는 것은 Thresh 일뿐입니다.) 바라기를 나는 가능한 한 분명했다. 감사합니다

+0

나는 그것을 '수 $ jsonArray [ "데이터"]해야한다고 생각 같은 $ key' @AlonEitan 여전히 난 그냥 난 그냥 키에서 ID를 찾을 필요가, 정말이에 대한 해결책을 필요 –

+0

. 412 = Thresh for example 예 : –

+0

@PedroLobito 작동하지 않습니다 –

답변

1

['data']이 아니고 ['data']["key"]이 아닌 루프를 루프해야합니다.

$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']; 
    } 
} 
+0

글자 그대로 방금 전에 이것을 풀어 냈습니다. 그래도 감사합니다. –

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

추가로 고려해야 할 중첩 수준이 있습니다. $array['data'] 그 자체는 Aatrox과 같은 키를 가진 연관 배열입니다. 각각의 키는 내부의 연관 배열입니다. 그것은이처럼 보이는

foreach($array['data'] as $element_name => $element_data) { 
    $key = $element_data['key']; 
    if ($key === '412') { 
     echo $element_data['id']; 
    }; 
} 

이 같은 데이터 세트와 함께 일하게하기 위하여려고하는 경우에, 당신은 idkey 값의 맵을 유지하는 것이 좋습니다 .. 당신이 찾아야 중첩 된 배열 내에 데이터는 id에 의한 빠른 검색을 가능하게하도록 구성됩니다.

관련 문제