Php数组重复分离

时间:2013-06-11 08:52:44

标签: php sorting

在PHP中我有一个id

的数组
$ids = array(1, 1, 1, 2, 2, 3, 3);

我只是希望将1成为1, 1, 1,将2成为2, 2,将3成为3, 3
我怎么能用PHP做到这一点?

4 个答案:

答案 0 :(得分:5)

您可以使用array_count_values找出每个元素在数组中出现的次数。你不会有{1, 1, 1},但是你会[1] => 3,我希望你能使用同样的东西。

答案 1 :(得分:4)

这可以通过简单的循环轻松完成:

$ids = array(1, 1, 1, 2, 2, 3, 3);

foreach($ids as $id){
    $new[$id][] = $id;
}

print_r($new);

<强>输出:

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

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

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

)

答案 2 :(得分:3)

你可以这样做

$ids = array(1, 1, 1, 2, 2, 3, 3);
foreach($ids as $key) {
    //Calculate the index to avoid duplication
    if(isset(${"arr_$key"})) $c = count(${"arr_$key"}) + 1;
    else $c = 0;
    ${"arr_$key"}[$c] = $key;
}

Demo

答案 3 :(得分:2)

我知道您需要不同的数组值(不重复)。如果是这样,那么这就是:

$ids = array(1, 1, 1, 2, 2, 3, 3);
$distinct_ids = array_values(array_unique($ids));

将输出设为

array (size=3)
0 => int 1
1 => int 2
2 => int 3

array_unique从数组中删除重复值,而array_value重置数组键。

文档:array_valuesarray_unique