我有两个像这样的数组,有更多的结果:
Array
(
[0] => Array
(
[comName] => John
[locID] => L152145
[locName] => Johns House
)
)
我想做的是比较结果,但只对locName元素…这是代码,我正在与目前为止的工作。
$searchcode = "a url to json results";
$simple = file_get_contents($searchcode);
$arr = json_decode($simple , true);
为每个json文件执行此操作,然后
$result = array_intersect($arr, $anotherarr);
理想情况下,这会从两个数组中返回匹配的locNames
谢谢你的帮助!
您正在寻找的是功能array_uintersect
:
$result = array_uintersect($arr, $anotherarr, function($a, $b) { return strcmp($a['locName'], $b['locName']); });
如果每个locName将只出现一次,那么我建议您以
形式将您的数组转换为关联数组Array
(
[Johns House] => Array
(
[comName] => John
[locID] => L152145
[locName] => Johns House
)
)
这样,您就可以使用array_keys
访问每个位置名称,并且可以在两个array_keys
上使用简单的array_intersect
选择两个数组中存在的位置。
最简单的方法是遍历原始数组填充一个新数组(如果计划管理10000+元素,则不是很有效,但在其他情况下可以忽略不计)
$assocA=array();
$assocB=array();
foreach($arr as $element) {
$assocA[$element['locName']]=$element;
}
foreach($anotherarr as $anotherelement) {
$assocB[$anotherelement['locName']]=$anotherelement;
}
$common_locations = array_intersect(array_keys($assocA), array_keys($assocB)); // will return all locnames present in both arrays.