Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多维数组-获取唯一值,但计算所有重复项_Php_Arrays_Multidimensional Array_Count_Numbers - Fatal编程技术网

Php 多维数组-获取唯一值,但计算所有重复项

Php 多维数组-获取唯一值,但计算所有重复项,php,arrays,multidimensional-array,count,numbers,Php,Arrays,Multidimensional Array,Count,Numbers,我有一个多维数组,我想从中获取唯一的子值,但也有这些唯一子值出现的次数计数 例如,这将是我的起始数组: [0] => Array ( [0] => Array ( [id] => 1533438473619168 ) [1] => Array (

我有一个多维数组,我想从中获取唯一的子值,但也有这些唯一子值出现的次数计数

例如,这将是我的起始数组:

[0] => Array
        (
            [0] => Array
                (
                    [id] => 1533438473619168
                )
            [1] => Array
                (
                    [id] => 3333333333333333
                )
        )
 [1] => Array
        (
            [0] => Array
                (
                    [id] => 1533438473619168
                )
            [1] => Array
                (
                    [id] => 5555555555555555
                )
        )
 [2] => Array
        (
            [0] => Array
                (
                    [id] => 1533438473619168
                )
            [1] => Array
                (
                    [id] => 77777777777777777
                )
        )
最后,我想要一个如下所示的数组:

[0] => Array
        (
            [0] => Array
                (
                    [id] => 1533438473619168
                    [count] => 3
                )
            [1] => Array
                (
                    [id] => 3333333333333333
                    [count] => 1
                )
            [2] => Array
                (
                    [id] => 5555555555555555
                    [count] => 1
                )
            [3] => Array
                (
                    [id] => 77777777777777777
                    [count] => 1
                )
        )

有没有一种通用/简单的方法可以做到这一点,而无需迭代每个值的第一个数组,比较/存储临时数组中的值,检查它们,并将其添加到计数中?

要获得精确的格式,您可能需要迭代当前数组并手动进行计数,但是php有数组\u count\u value()和array_unique()函数来实现这类功能:


要获得这种精确的格式,您可能需要迭代当前数组并手动进行计数,但是php有array\u count\u values()和array\u unique()函数用于此类操作:


因为您只关心数组中最深的值,所以使用
数组\u walk\u recursive
似乎适合这种情况。请注意,回调中使用了对输出数组
$counted
的引用

array_walk_recursive($ids, function($id, $k) use (&$counted) {
    $counted[$id] = isset($counted[$id]) ? $counted[$id] + 1 : 1;
});
使用id作为
$counted
数组中的键将简化计数。这样做的结果将与您建议的输出有所不同,但在我看来,它实际上更易于使用。(例如,
foreach($id=>$count){…


因为您只关心数组的最深值,所以使用
array\u walk\u recursive
似乎适用于此。请注意,回调中使用了对输出数组
$counted
的引用

array_walk_recursive($ids, function($id, $k) use (&$counted) {
    $counted[$id] = isset($counted[$id]) ? $counted[$id] + 1 : 1;
});
使用id作为
$counted
数组中的键将简化计数。其结果将与建议的输出有所不同,但我认为它实际上更易于使用。(例如
foreach($id=>$count){…


不,没有比这更简单的方法了。使用id作为新数组的键以避免比较/检查。然后,您可以使用
array\u值将其删除。对于初学者,我会将所有数组合并在一起,然后您只需在一个数组中循环。感谢您的所有帮助。最后,我只是手动完成了此操作(正如我所料,这并不难,但比我所希望的更麻烦)。不,没有比这更简单的方法了。使用id作为新数组的键以避免比较/检查。然后,您可以使用
array\u value
将其删除。对于初学者,我会将所有数组合并在一起,然后您只需在一个数组中循环。感谢您的所有帮助。最后,我只是手动完成了此操作(正如我所料,这并不难,但比我所希望的更麻烦)。谢谢,我将尝试此方法,看看它是否比我当前的解决方案更高效,但两者似乎都使用临时数组存储和相同的代码行。谢谢,我将尝试此方法,看看它是否比我当前的解决方案更高效,但两者似乎都使用临时数组存储和相同的代码行。