PHP - 收集相同的数组值

时间:2014-07-14 14:39:14

标签: php arrays

所以我有一个数组 array ( 1, 2, 2, 5, 4, 5, 4, 1, 1, 5 )我需要收集相同的数组值并将其划分为不同的数组。所以在从这个数组执行此操作后,我应该有4个不同的数组:

array ( 1, 1, 1 )
array ( 2, 2 )
array ( 5, 5, 5 )
array ( 4, 4 )

最好的方法是什么?

4 个答案:

答案 0 :(得分:3)

$result = [];
foreach (array_count_values($values) as $value => $occurrence) {
    $result[] = array_fill(0, $occurrence, $value);
}

这假定单个值标识无关紧要,即您没有对象需要的单个实例。

虽然我不确定为什么你需要那种特定的阵列格式然后才开始。只需使用array_count_values的结果。

答案 1 :(得分:2)

$input = array ( 1, 2, 2, 5, 4, 5, 4, 1, 1, 5 );
$output = array();

foreach ($input as $value)
   $output[$value][] = $value;

var_dump($output)

答案 2 :(得分:2)

您可以创建另一个数组,其中不同的值为数组键。

<?php

$array = array(1, 2, 2, 5, 4, 5, 4, 1, 1, 5);    
$result = array();

foreach ($array as $val) {
    if (!isset($result[$val])) { // Check if the index exists
        $result[$val] = array();
    }

    $result[$val][] = $val;
}

print_r($result);

答案 3 :(得分:0)

您可以尝试以下内容

<?php
    $a  = array ( 1, 2, 2, 5, 4, 5, 4, 1, 1, 5 );
    $a = array_count_values($a);
    $arr = array();
    foreach($a as $k=>$v){
        for($i = 0; $i < $v; $i++){
            $arr[$k][] = $k;
        }
    }
    print_r($arr );
?>

<强>输出:

Array
(
[1] => Array
    (
        [0] => 1
        [1] => 1
        [2] => 1
    )

[2] => Array
    (
        [0] => 2
        [1] => 2
    )

[5] => Array
    (
        [0] => 5
        [1] => 5
        [2] => 5
    )

[4] => Array
    (
        [0] => 4
        [1] => 4
    )

)