從本質上講,你可以使用array_slice
剝離出你所需要的塊和asort
到陣列從最小到最大排序第一。
下面的代碼將這樣的伎倆:
(編輯:最近的評論我很困惑之後,你說你想要的數組中的數字的總和是接近相同的我還以爲你的意思是你想要的陣列在尺寸上平分不是總和)
$arr = array(1,1,2,1,4,5,7,2,3);
asort($arr); // sort the array
$x = 3; // number of arrays
$offset = ceil(count($arr)/$x);
$newArrays = array();
for($i=0;$i<=count($arr)-1;$i+=$offset) {
$newArrays[] = array_slice($arr,$i,$offset);
}
var_dump($newArrays);
結果:
array(3) {
[0]=>
array(3) {
[0]=>
int(1)
[1]=>
int(1)
[2]=>
int(1)
}
[1]=>
array(3) {
[0]=>
int(2)
[1]=>
int(2)
[2]=>
int(3)
}
[2]=>
array(3) {
[0]=>
int(4)
[1]=>
int(5)
[2]=>
int(7)
}
}
什麼是你出的基礎投入。?你怎麼寫它? –
你是什麼意思_最後的數字越大_? – AbraCadaver
第一個數組中的數字總數爲26,因此應該有兩個總數爲9和8中的一個,這是我輸出的基礎。我不知道如何有效實現這個效果 – Blakethepatton