簡體   English   中英

檢查鍵是否在與字符串匹配的數組中

[英]check if key exists in array that matches string

我收到來自第三方的提要,其中包括每個對象的位置字符串。

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

有時,位置字符串的格式不正確/變化太多,位置DB根本不匹配。

我在“特殊位置”的配置文件中設置了一個數組,如果位置匹配失敗,我希望能夠與該數組進行匹配。

例如,在我的數組中,我將有:

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

而且我可能會從Feed中獲取一個對象,該對象的位置字符串為

'Aberdeen (EU Travel)'

另一個可能是:

'Aberdeen Airport, Grampia'

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

如何檢查數組,以查看位置字符串中是否有鍵? 或位置字符串包含數組中的鍵

如果我們這樣處理,該怎么辦?

// 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>';
}

這使我們可以通過部分字符串匹配來查找結果。

讓我知道這樣的事情是否有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM