检测重复但忽略PHP数组上的值

检测重复但忽略PHP数组上的值,php,arrays,Php,Arrays,我知道如何使用array_diff_key($x,array_unique($x))检测PHP数组中的重复值 我的问题是我想检测PHP数组中的重复值,但忽略一个值或空值。例如: $x = array (1,0,0,0,4,4,3); $x = array (1,NULL,NULL,NULL,4,4,3); 我想在不改变数组结构的情况下检测4(数组长度必须仍然为7)。 这在PHP中可能吗?怎么做?试试这个: $y = array_filter($x,function($d){return $x!

我知道如何使用
array_diff_key($x,array_unique($x))检测PHP数组中的重复值

我的问题是我想检测PHP数组中的重复值,但忽略一个值或空值。例如:

$x = array (1,0,0,0,4,4,3);
$x = array (1,NULL,NULL,NULL,4,4,3);
我想在不改变数组结构的情况下检测4(数组长度必须仍然为7)。 这在PHP中可能吗?怎么做?

试试这个:

$y = array_filter($x,function($d){return $x!==null;});
$z = array_diff_key($y,array_unique($y));
$y
只有不为空的项


$z
具有来自
$x
的重复项的键,这些键不为空。

我可以执行以下自定义功能
检测器

<?php
$x = array (1,0,0,0,4,4,3);

    function detectArr($arr){
       $output = array();
       foreach ($arr as $i){
            if ($i){
                    $output[] = $i;
            }
            else{
                    $output[] = NULL;
            }        
       }
        return $output;
    }

    echo "<pre>";
    print_r(detectArr($x));

这在PHP中可能吗?
是的,在php1中可能。阅读本网站的规则2。编写代码3。发布清除问题您可以使用
array\u intersect\u assoc
使用
array\u filter
在检查重复项之前删除要忽略的值。这些函数都不会改变原来的数组结构,它们会返回新的数组。请详细解释