我有4个数组,每次运行代码时都会有所不同。有时,也许是空的。我使用array_intersect
从数组集中获取公共值,如果任何一个数组为空,则返回一个空数组。我希望array_intersect
忽略空数组。
示例:
$array1 = array('441', '442', '443');
$array2 = array('441', '443');
$array3 = array('441', '442',);
$array4 = array();
var_dump(array_intersect($array1, $array2, $array3, $array4));
// Returns
array('');
// Required
array('441');
如何使其忽略$array4
并输出441
答案 0 :(得分:8)
如果将数组存储为数组,则可以执行以下操作:
<?php
// create array of arrays
$array[] = array('441', '442', '443');
$array[] = array('441', '443');
$array[] = array('441', '442');
$array[] = array();
// filter out empty array
$array = array_filter($array);
// pass in array (inline argument unpacking PHP > 5.6)
print_r(array_intersect(...$array));
Array
(
[0] => 441
)
答案 1 :(得分:2)
$tempArray = [];
if (count($g_arr) >0) $tempArray[] = $g_arr;
if (count($c_arr) >0) $tempArray[] = $c_arr;
if (count($k_arr) >0) $tempArray[] = $k_arr;
if (count($m_arr) >0) $tempArray[] = $m_arr;
if (count($p_arr) >0) $tempArray[] = $p_arr;
$intersect = call_user_func_array('array_intersect', $tempArray);
答案 2 :(得分:2)
看看下面的解决方案:
$array = array(); //initialize $arrar
$array[] = array('441', '442', '443');
$array[] = array('441', '443');
$array[] = array('441', '442',);
$array[] = array();
$array = array_filter($array); //filter empty array
$res_arr = array_shift($array); // Shift an element off the beginning of array
foreach($array as $filter){
$res_arr = array_intersect($res_arr, $filter);
}
print_r($res_arr);
<强>输出强>
Array ( [0] => 441 )
请参阅示例:https://3v4l.org/Rkt1R
答案 3 :(得分:1)
$array1 = array('441', '442', '443');
$array2 = array('441', '443');
$array3 = array('441', '442',);
$array4 = array();
function get_intersect(...$arrays){
$instersect_arrays = array();
foreach($arrays as $array){
if(!empty($array)){
array_push($instersect_arrays,$array);
}
}
return call_user_func_array('array_intersect', $instersect_arrays);
}
var_dump(get_intersect($array1, $array2, $array3, $array4));
//output: array(1) { [0]=> string(3) "441" }