确定数组中的空值并获取键数组

时间:2019-04-20 07:07:27

标签: php

发布数组数据时遇到了一些问题:

当我发布数据时,它将是2个数组:

Array(1)[
[0]=>1
[1]=>2
[2]=>3
]

Array(2)[
[0]=>1
[1]=>
[2]=>3
]

请注意,Array2将是一些空白数据。

现在,我一直工作到使用 array_filter(Array2),但问题是我可以从Array1中获取键/ data匹配到Array2中的非空数据吗?

也许这个问题会令人困惑,对不起,我的语言不好...

3 个答案:

答案 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
)