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

时间:2022-03-04 19:16:48

i am stuck at this stage of my project.

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

i am trying to get common values from four multidimensional arrays using array_intersect. can anyone help me with this issue ?

我试图使用array_intersect从四个多维数组中获取常用值。任何人都可以帮我解决这个问题吗?

here are all four array:

这里有四个数组:

$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);

2 个解决方案

#1


3  

If subarray contain one element always you could chage that value using array_map and current function.

如果子数组包含一个元素总是可以使用array_map和current函数来转换该值。

$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
// )

#2


2  

Please check this

请检查一下

$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);

#1


3  

If subarray contain one element always you could chage that value using array_map and current function.

如果子数组包含一个元素总是可以使用array_map和current函数来转换该值。

$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
// )

#2


2  

Please check this

请检查一下

$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);