2015-10-29 60 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>'; 
} 

这使我们能够通过部分字符串匹配找到结果。

让我知道这是否像这样的作品。

相关问题