2015-10-29 59 views
0

我收到來自第三方的訂閱源,其中包含每個對象的位置字符串。檢查數組中是否存在與字符串匹配的關鍵字

我循環遍歷每個對象,檢查位置並根據匹配位置與我擁有的位置數據庫存儲它的經度/緯度值。

有時,位置字符串格式不正確/位置數據量太多/位置數據庫只是不匹配任何內容。

我已經在'特殊位置'的配置文件中設置了一個數組,如果位置匹配失敗,我希望能夠匹配它。

例如,在我的陣列我將有:

Aberdeen => ( 
    latitude => LATVAL, 
    longitude => LONGVAL 
), 
Greater London => (
    latitude => LATVAL, 
    longitude => LONGVAL 
) 

,我可能會從進料的物體的

'Aberdeen (EU Travel)' 

位置的字符串,另一個可能是:

'Aberdeen Airport, Grampia' 

在這些情況下,我想匹配阿伯丁,並能夠得到相關的緯度/經度。

如何檢查我的數組,以查看是否有任何鍵在位置字符串內?或者位置字符串包含來自陣列的密鑰

+1

http://php.net/array_keys,http://php.net/preg_grep –

+0

這些鏈接幫助我解決了我的查詢,謝謝 – rpsep2

回答

0

如果我們像這樣接近它,該怎麼辦?

// Function to compare and find and return; 
function checkIfContains($find,$locations) 
{ 
    $newArray = array(); 
    foreach($locations as $loc => $value) 
    { 
     if (strpos($loc,$find) !== false) { 
      $newArray[] = $value; 
     } 
    } 
    return $newArray; 
} 

// Sample data 
$locations = array(
    'Aberdeen' => array(
     'latitude' => '123.123123213', 
     'longitude' => '5.34234324' 
    ), 
    'Aberdeen (EU Travel)' => array(
     'latitude' => '112.4344443', 
     'longitude' => '1.23444322' 
    ), 
    'Aberdeen Airport, Grampia' => array(
     'latitude' => '6.434443', 
     'longitude' => '23.34445' 
    ), 
    'Greater London' => array(
     'latitude' => '13.545453', 
     'longitude' => '11.233467' 
    ) 
); 

// Filtered array with only the Aberdeen Elements 
$filteredArray = checkIfContains('Aberdeen' , $locations); 

// Debugging Test 
foreach($filteredArray as $loc) 
{ 
    echo $loc['latitude'] .',', $loc['longitude'].'<br>'; 
} 

這使我們能夠通過部分字符串匹配找到結果。

讓我知道這是否像這樣的作品。

相關問題