绝对在这里做我认为非常简单的事情......
我有2个数组。
$post_cats
这是任何给定帖子所属的类别。$ad_cats
这是一个放置广告的类别数组。基本上,如果帖子在所选类别的数组中有一个与广告类别数组中的项匹配的类别,那么它必须返回匹配的值/项。
$post_cats
会返回此
array(4) {
[0]=> array(1) { ["slug"]=> string(6) "energy" }
[1]=> array(1) { ["slug"]=> string(6) "global" }
[2]=> array(1) { ["slug"]=> string(8) "identify" }
[3]=> array(1) { ["slug"]=> string(5) "south" }
}
和$ad_cats
会返回此
array(6) {
[0]=> array(1) { ["slug"]=> string(5) "north" }
[1]=> array(1) { ["slug"]=> string(5) "south" }
[2]=> array(1) { ["slug"]=> string(4) "east" }
[3]=> array(1) { ["slug"]=> string(4) "west" }
[4]=> array(1) { ["slug"]=> string(6) "global" }
[5]=> array(1) { ["slug"]=> string(8) "fallback" }
}
复制的项目有“南”,所以在我看来array_intersect($post_cats, $ad_cats);
的值应该是一个带有单个项目的数组 - “南”,对吗?
但它的回归,似乎是任何一个阵列中的一切......我不能为我的生活让它发挥作用..
使用上面的例子,我需要将“south”返回给变量。
答案 0 :(得分:0)
所以你正在寻找两个数组中的项目? ...
这样的事情:
function find_duplicate($array1, $array2)
{
$list = array();
foreach($array1 as $value1)
{
foreach($array2 as $value2)
{
if($value1 == $value2) $list[] = $value1;
}
}
return $list;
}
答案 1 :(得分:0)
最好的方法是转换数组array_intersect
中可以使用的数组。
考虑到:
$a; // first array
$b; // second array
然后你会选择:
$a1 = array();
foreach ($a as $v) $a1[] = $v['slug'];
$b1 = array();
foreach ($b as $v) $b1[] = $v['slug'];
$c = array_intersect($a1, $b1);
PHP函数通常使用比您想象的更强大的算法;因此,让PHP函数处理这类事情是个不错的选择。
答案 2 :(得分:0)