我从第三方收到了一个Feed,其中包含每个对象的位置字符串。
我遍历每个对象,检查位置并根据位置与我所拥有的位置匹配来存储纬度/经度值。
有时,位置字符串格式不正确/变化太多/位置DB与任何内容都不匹配。
我在“特殊位置”的配置文件中设置了一个数组,如果位置匹配失败,我希望能够匹配它。
例如,在我的数组中,我将:
Aberdeen => (
latitude => LATVAL,
longitude => LONGVAL
),
Greater London => (
latitude => LATVAL,
longitude => LONGVAL
)
我可能会从Feed中获取一个位置字符串为
的对象'Aberdeen (EU Travel)'
,另一个可能是:
'Aberdeen Airport, Grampia'
在这些情况下,我想要匹配Aberdeen,并且能够得到相关的纬度/经度。
如何查看我的数组,查看是否有任何键在位置字符串中?或者位置字符串包含数组中的键
答案 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>';
}
这允许我们通过部分字符串匹配来查找结果。
让我知道这样的事情是否有效。