2014-02-19 28 views
0

在機票預訂網站工作。有一個包含機場代碼,城市名稱和國家名稱的json文件。根據json數據提供的機場代碼獲取機場名

[{"iata":"UTK","lon":"169.86667","iso":"MH","status":1,"name":"Utirik Airport","continent":"OC","type":"airport","lat":"11.233333","size":"small"}]

現在,如果我iata機場代碼匹配UTK我要回的名稱。

+1

使用for循環遍歷數組並檢查代碼。 –

+0

請不要添加PHP標籤。由於該問題與PHP無關,因此您的標記無效。你的問題現在是一個不好的問題,因爲你不清楚你在問什麼。你想在JavaScript或PHP的解決方案?你不能同時擁有兩個 - 除非你的具體要求使用兩種技術......在這種情況下,你需要顯示你當前的代碼嘗試。我將不得不downwaote這個問題,直到你改善它,對不起 – musefan

+0

這裏PHP和json有關係知道,如果一些身體在php中搜索相同的代碼,這個答案可能會幫助他們。所以我加了標籤 –

回答

1

使用filter()iata找到Array內的對象:

var arr = [{"iata":"UTK","lon":"169.86667","iso":"MH","status":1,"name":"Utirik Airport","continent":"OC","type":"airport","lat":"11.233333","size":"small"}]; 

function findByCode(arr, iata){ 
    var filtered = arr.filter(function(e){return e.iata = iata}); 
    return (filtered.length == 1) ? filtered[0]:undefined; 
} 

console.log(findByCode(arr,"UTK").name); 

JS小提琴:http://jsfiddle.net/dE9nP/

+0

縮小版! Thanx哥們 –

+0

@RadhakrishnaRayidi很高興我能幫忙! –

0

這是基本的搜索!您需要遍歷數組,然後檢查每個項目的匹配代碼,然後返回結果。這裏是一個函數:

function findAirport(myArray, iata){ 
    for(var i = 0; i < myArray.length; i++){ 
     var item = myArray[i]; 
     if(item["iata"] === iata){ 
      return item; 
     } 
    } 
    return null; 
} 

您可以使用該功能,像這樣:

var airports = [{"iata":"UTK","lon":"169.86667","iso":"MH","status":1,"name":"Utirik Airport","continent":"OC","type":"airport","lat":"11.233333","size":"small"}]; 
var match = findAirport(airports, "UTK"); 
if(match){ 
    console.log("name = " + match.name); 
} 

只是強調,我國優先使用簡單超過其他功能,如filterhere is a performance test循環比較我回答使用filter的另一個。我知道這是在最真實的使用情況毫無意義,但我想保持到jsperf鏈接:)

注意參考:經過編輯的問題標籤之前提供了這個答案。在發佈這一問題的時間要求一個JavaScript解決方案

+0

哇!像魅力一樣工作:)謝謝兄弟 –

+0

@RadhakrishnaRayidi:希望你可以把這個新知識應用到任何你需要在未來搜索陣列 – musefan

+0

謝謝! Defenetly .. –

0
$string = '[{"iata":"UTK","lon":"169.86667","iso":"MH","status":1,"name":"Utirik Airport","continent":"OC","type":"airport","lat":"11.233333","size":"small"}]'; 
$data = json_decode($string); 
echo count($data); 
for($i=0;$i<count($data);$i++){ 
if($data[$i]->iata == 'UTK') echo $data[$i]->name; 
} 

可以使用的file_get_contents如果在一個文件,而不是$字符串的數據;

+0

這不是一個PHP的問題。 Javascript只回答請 – musefan

+0

即使這樣,答案也有助於PHP開發人員。那是y +1 –

+0

@RadhakrishnaRayidi:這不是stackoverflow的工作原理。答案應該回答確切的問題。不要成爲替代語言實施的參考點。已經有很多關於如何在PHP中搜索JSON數組的問題(帶有答案) – musefan