所以我有一個數組 array (1, 2, 2, 5, 4, 5, 4, 1, 1, 5)
我需要收集相同的數組值並將其分成不同的數組。所以在這個陣列之後,我應該有4個不同的陣列:PHP - 收集相同的數組值
array (1, 1, 1)
array (2, 2)
array (5, 5, 5)
array (4, 4)
什麼是最好的辦法呢?
所以我有一個數組 array (1, 2, 2, 5, 4, 5, 4, 1, 1, 5)
我需要收集相同的數組值並將其分成不同的數組。所以在這個陣列之後,我應該有4個不同的陣列:PHP - 收集相同的數組值
array (1, 1, 1)
array (2, 2)
array (5, 5, 5)
array (4, 4)
什麼是最好的辦法呢?
$result = [];
foreach (array_count_values($values) as $value => $occurrence) {
$result[] = array_fill(0, $occurrence, $value);
}
這假定個體價值認同不要緊,即你沒有對象,它們的單個實例需要。
雖然我不確定爲什麼你需要特定的數組格式,然後擺在首位。只需使用array_count_values
的結果即可。
謝謝,非常舒適的解決方案 – user3744738
$input = array (1, 2, 2, 5, 4, 5, 4, 1, 1, 5);
$output = array();
foreach ($input as $value)
$output[$value][] = $value;
var_dump($output)
您可以製作另一個數組,其中不同的值作爲數組鍵。
<?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);
你可以嘗試像下面
<?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
)
)
看看'array_count_values()',應該讓你幾乎有:HTTP:// PHP。 net/manual/en/function.array-count-values.php – jeroen