Php数组独特比较2种类型

时间:2014-04-01 04:40:01

标签: php arrays compare unique

我有来自excel的数据(超过10000),数据格式如下,

示例:

Message | Number 

Test 1    021
Test 2    033
Test 3    022
Test 3    022
Test 3    033
Test 2    022
Test 2    021

接受的输入应为

same number & different message
different number & same message
different number & different message

我尝试使用数组进行验证,我尝试了array_unique,但我只能使用1种类型,

$arrayCon[$i]=array("message"=>$message, "number"=>$number);
$realArray=array_unique($arrayCon["number"]);

如何在1个阵列中比较2种类型?

2 个答案:

答案 0 :(得分:1)

您需要在数组本身上应用array_unique(),指定SORT_REGULAR标志来比较每个元素:

$realArray = array_unique($arrayCon, SORT_REGULAR)

答案 1 :(得分:0)

您可以利用JSON,从而使数据行成为字符串,因此array_unique可用:

$source=array();
foreach($database as $row)
{
    $source[]=json_encode(array("message"=>$row[0],"number"=>$row[1]));
}
$unique=array_map(function($str){
    return json_decode($str,true);
},array_unique($source));

Online demo
(我现在支持代理,似乎搞乱了3v4l.org的结果输出。如果你看不到结果,请告诉我)

我的localhost输出上的

print_r

Array
(
    [0] => Array
        (
            [message] => Test 1
            [number] => 021
        )

    [1] => Array
        (
            [message] => Test 2
            [number] => 033
        )

    [2] => Array
        (
            [message] => Test 3
            [number] => 022
        )

    [4] => Array
        (
            [message] => Test 3
            [number] => 033
        )

    [5] => Array
        (
            [message] => Test 2
            [number] => 022
        )

    [6] => Array
        (
            [message] => Test 2
            [number] => 021
        )

)