从php中的多维数组中仅提取重复值

时间:2016-08-15 18:55:29

标签: php arrays multidimensional-array

我有这样的数组

 $non_unique_zip

          [0]->[0]91390
               [1]ca
               [2]1

          [1]->[0]91391
               [1]ca
               [2]1

          [2]->[0]91392
               [1]ca
               [2]1

           [3]->[0]91390
                [1]ca
                [2]2

           [4]->[0]91394
                [1]ca
                [2]2

所以基本上数组有元素,其中arra [n] [0]是zipcode,array [n] [2]是buyer_id。 现在,我只想要有多个买家的邮政编码。所以我唯一要提取的是

[0]->[0]91390
     [1]ca

因为91390是唯一的买家为1和2的邮政编码。 我试过了

$result = array();
$first = $non_unique_zip[0];
for($i=0; $i<count($non_unique_zip); $i++){
    $result = array_intersect ($first, $non_unique_zip[$i]);
    $first = $result;
}

但它只是给出错误未定义的偏移量。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:-1)

像这样使用array_walk

    <?php

        $non_unique_zip = [
            [91390, "ca"],
            [91391, "ca"],
            [91392, "ca"],
            [91390, "ca"],
            [91394, "ca"],
        ];

        $unique_zip = [];
        $duplicates = [];

        array_walk($non_unique_zip, function($data) use(&$unique_zip, &$duplicates){
            if(!in_array($data, $unique_zip)){
                $unique_zip[] = $data;
            }else{
                $duplicates[] = $data;
            }
        });


        var_dump( $duplicates );
        // PRODUCES::
        array (size=1)
          0 =>
            array (size=2)
              0 => int 91390
              1 => string 'ca' (length=2)


        var_dump( $unique_zip );
        // PRODUCES::
        array (size=4)
          0 => 
            array (size=2)
              0 => int 91390
              1 => string 'ca' (length=2)
          1 => 
            array (size=2)
              0 => int 91391
              1 => string 'ca' (length=2)
          2 => 
            array (size=2)
              0 => int 91392
              1 => string 'ca' (length=2)
          3 => 
            array (size=2)
              0 => int 91394
              1 => string 'ca' (length=2)