发布数组数据时遇到了一些问题:
当我发布数据时,它将是2个数组:
Array(1)[
[0]=>1
[1]=>2
[2]=>3
]
Array(2)[
[0]=>1
[1]=>
[2]=>3
]
请注意,Array2将是一些空白数据。
现在,我一直工作到使用 array_filter(Array2),但问题是我可以从Array1中获取键/ data匹配到Array2中的非空数据吗?
也许这个问题会令人困惑,对不起,我的语言不好...
答案 0 :(得分:0)
您可以使用array_intersect
从array1获取非空值
$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
)
答案 1 :(得分:0)
如果我的假设是正确的:
使用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”
答案 2 :(得分:0)
如果您要基于$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
)