Php 如何使用array_intersect从4个多维数组中获取公共值

Php 如何使用array_intersect从4个多维数组中获取公共值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我被困在我项目的这个阶段 我试图使用array_intersect从四个多维数组中获取公共值。有人能帮我解决这个问题吗 以下是所有四个阵列: $arr=array(array(8159),array(8140),array(8134),array( 8168),array(8178),array( 8182),array( 8183)); $arr1=array(array(8159),array(8140),array(8134),array(8165),array(8166),array

我被困在我项目的这个阶段

我试图使用array_intersect从四个多维数组中获取公共值。有人能帮我解决这个问题吗

以下是所有四个阵列:

$arr=array(array(8159),array(8140),array(8134),array( 8168),array(8178),array( 8182),array( 8183));


$arr1=array(array(8159),array(8140),array(8134),array(8165),array(8166),array(8167),array( 8168));


$arr2=array(array(566),array(265),array(8134),array(655),array(8166),array(665),array( 8168),array(656),array( 989),array( 989));

$arr3=array(array(8159),array(8140),array(8134),array(8165),array(8166),array(8167),array( 8168));

$res= array_intersect($arr,$arr1,$arr2,$arr3); 

print_r($res);
请检查这个

$arr=array(array(8159),array(8140),array(8134),array( 8168),array(8178),array( 8182),array( 8183));
$arr1=array(array(8159),array(8140),array(8134),array(8165),array(8166),array(8167),array( 8168));
$arr2=array(array(566),array(265),array(8134),array(655),array(8166),array(665),array( 8168),array(656),array( 989),array( 989));
$arr3=array(array(8159),array(8140),array(8134),array(8165),array(8166),array(8167),array( 8168));
foreach($arr as $value)
{
    $a1[] = $value[0];
}
foreach($arr1 as $value)
{
    $a2[] = $value[0];
}
foreach($arr2 as $value)
{
    $a3[] = $value[0];
}
foreach($arr3 as $value)
{
    $a4[] = $value[0];
}
$res= array_intersect($a1,$a2,$a3,$a4); 
print_r($res);

若子数组始终包含一个元素,则可以使用and函数更改该值

$arr=array(array(8159),array(8140),array(8134),array( 8168),array(8178),array( 8182),array( 8183));
$arr1=array(array(8159),array(8140),array(8134),array(8165),array(8166),array(8167),array( 8168));
$arr2=array(array(566),array(265),array(8134),array(655),array(8166),array(665),array( 8168),array(656),array( 989),array( 989));
$arr3=array(array(8159),array(8140),array(8134),array(8165),array(8166),array(8167),array( 8168));

$arr = array_map('current', $arr);   // getting first value of subarray
$arr1 = array_map('current', $arr1);
$arr2 = array_map('current', $arr2);
$arr3 = array_map('current', $arr3);
print_r($arr3);
// Array
// (
//     [0] => 8159
//     [1] => 8140
//     [2] => 8134
//     [3] => 8165
//     [4] => 8166
//     [5] => 8167
//     [6] => 8168
// )

$res= array_intersect($arr,$arr1,$arr2,$arr3);
print_r($res);
// Array
// (
//    [2] => 8134
//    [3] => 8168
// )

提示:数组映射序列化数组相交数组映射非序列化是否有将每个元素存储在其自己的单值数组中的原因?这是错误的方法<当且仅当(字符串)$elem1==(字符串)$elem2时,两个元素被视为相等。换句话说:当字符串表示形式相同时。。所以函数将比较“数组”值而不是实际值。@MarkM我不存储任何如上所示的结果。。。我已经在wordpress中的$wpdb->get_results()中显示了所有数组。@sectus。说得好。。但在我的问题中,我如何比较这些价值观呢?