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

问题描述 投票:-2回答:3

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

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

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

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

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

现在我一直在使用array_filter(Array2),但问题是我可以将Array1中的键/数据与Array2中的非空数据匹配吗?

也许这会让人感到困惑,抱歉我的语言不好......

php
3个回答
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
)

0
投票

您可以使用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
)

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”

© www.soinside.com 2019 - 2024. All rights reserved.