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

时间:2015-01-01 05:06:25

标签: php arrays

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

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

$x = array (1,0,0,0,4,4,3);
$x = array (1,NULL,NULL,NULL,4,4,3);

我想在不改变数组结构的情况下检测4(数组长度仍然必须为7)。 这可能在PHP?怎么做?

2 个答案:

答案 0 :(得分:1)

试试这个:

$y = array_filter($x,function($d){return $x!==null;});
$z = array_diff_key($y,array_unique($y));

$y只有NOT null项。

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

答案 1 :(得分:0)

我可以执行以下自定义函数detectArr

<?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));

结帐本次演示:http://codepad.org/W8ocL6dj