在PHP中对数组内的唯一数组进行计数


Counting unique arrays inside the array in PHP?

我有一个包含其他数组的数组:

Array
(
    [0] => Slip Object
        (
            [userId:protected] => 1
            [parentSlipId:protected] => 0
            [id:protected] => 25
            [madeDatetime:protected] => 2011-04-19 17:13:09
            [stake:protected] => 34.00
            [status:protected] => 6
        )
    [1] => Slip Object
        (
            [userId:protected] => 1
            [parentSlipId:protected] => 0
            [id:protected] => 25
            [madeDatetime:protected] => 2011-04-19 17:13:09
            [stake:protected] => 34.00
            [status:protected] => 6
        )
    [2] => Slip Object
        (
            [userId:protected] => 1
            [parentSlipId:protected] => 0
            [id:protected] => 24
            [madeDatetime:protected] => 2011-04-18 11:31:26
            [stake:protected] => 13.00
            [status:protected] => 6
        )    
)

计数唯一数组的最佳方法是什么?

你可以试试:

$hashes = array();
$uniques = 0;
foreach($array as $slip) {
    $hash = sha1(serialize($slip));
    if(!in_array($hash, $hashes)) {
        ++$uniques;
        $hashes[] = $hash;
    }
}
var_dump($uniques); // prints total number of unique objects.
编辑:

@biakaveron的想法看起来更好,可以适应:

$uniques = count(array_unique($array, SORT_REGULAR));
var_dump($uniques); // prints total number of unique objects.

对于从数组中删除重复数组有多种解决方案。如果你实现了它们中的任何一个,然后对返回的数组使用sizeof(),你就有了你的解决方案。

,

<?php
$yourarray = array();
$tmp = array ();
foreach ($yourarray as $row) 
    if (!in_array($row,$tmp)) array_push($tmp,$row);
echo sizeof($tmp);
?>