检查数组中是否存在与字符串匹配的键

时间:2015-10-29 19:07:10

标签: php

我从第三方收到了一个Feed,其中包含每个对象的位置字符串。

我遍历每个对象,检查位置并根据位置与我所拥有的位置匹配来存储纬度/经度值。

有时,位置字符串格式不正确/变化太多/位置DB与任何内容都不匹配。

我在“特殊位置”的配置文件中设置了一个数组,如果位置匹配失败,我希望能够匹配它。

例如,在我的数组中,我将:

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

我可能会从Feed中获取一个位置字符串为

的对象
'Aberdeen (EU Travel)'

,另一个可能是:

'Aberdeen Airport, Grampia'

在这些情况下,我想要匹配Aberdeen,并且能够得到相关的纬度/经度。

如何查看我的数组,查看是否有任何键在位置字符串中?或者位置字符串包含数组中的键

1 个答案:

答案 0 :(得分: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>';
}

这允许我们通过部分字符串匹配来查找结果。

让我知道这样的事情是否有效。