发布数组数据时遇到了一些问题:
当我发布数据时,它将是2个数组:
Array(1)[
[0]=>1
[1]=>2
[2]=>3
]
Array(2)[
[0]=>1
[1]=>
[2]=>3
]
请注意,Array2将是一些空白数据。
现在我一直在使用array_filter(Array2),但问题是我可以将Array1中的键/数据与Array2中的非空数据匹配吗?
也许这会让人感到困惑,抱歉我的语言不好......
如果你想根据$array1
的值过滤$array2
,你可以使用filter
和第三个参数ARRAY_FILTER_USE_KEY
来使用密钥。
$array1 = [1,2,3];
$array2 = [1,null,500];
$newArray1 = array_filter($array1, function ($key) use ($array2) {
return $array2[$key];
},ARRAY_FILTER_USE_KEY
);
$newArray2 = array_filter($array2);
echo "<pre>";
print_r( $newArray1 );
print_r( $newArray2 );
echo "</pre>";
这将导致:
Array
(
[0] => 1
[2] => 3
)
Array
(
[0] => 1
[2] => 500
)
您可以使用array_intersect
从array1获取非null值
$arr = array(
1 => array(1,2,3),
2 => array(1,'',3)
);
$result= array_filter(array_intersect($arr[1],$arr[2]));
echo '<pre>';
print_r($result);
结果
Array
(
[0] => 1
[2] => 3
)
如果我的假设是正确的:
使用array_intersect_assoc和数组过滤器。 数组过滤器将删除空值,array_intersect_assoc将在两个数组之间找到匹配。
Array_intersect_assoc是您需要的,因为它也会匹配键而不仅仅是值。
$res = array_intersect_assoc(array_filter($arr1), array_filter($arr2));
请参见此处的示例:https://3v4l.org/Tp72C省略空值,并且“1”仅在键0处匹配,因为在array2中的位置4处没有“1”