阵列分隔/划分为value

问题描述 投票:0回答:3
$a = array(8, 16, 16, 32, 8, 8, 4, 4);

具有上面的数组,有一种方法,因此我可以根据汇总到设定值的值来划分/拆分数组。 例如,如果我希望它们等于32。我的最终数组的值最高为100个值,所有值都是32、16、8或4,我只需要对项目进行分组,以便该值始终等于设定的金额,因此在此示例中,其32。

我希望得到上述阵列:

$a[0][1] = 16
$a[0][2] = 16

$a[1][3] = 32

$a[2][0] = 8
$a[2][4] = 8
$a[2][5] = 8
$a[2][6] = 4
$a[2][7] = 4

AS$ a [0]总和最多32,$ a [1]和$ a [2]。

php arrays function
3个回答
4
投票
$a = array(8, 16, 16, 32, 8, 8, 4, 4); $limit = 32; rsort($a); $b = array(array()); $index = 0; foreach ($a as $i) { if ($i + array_sum($b[$index]) > $limit) { $b[++$index] = array(); } $b[$index][] = $i; } $a = $b; print_r($a);
它会起作用,但这仅仅是因为在您的情况下您有4 | 8 | 16 | 32,只有当需要的总和是最大数字的倍数时(32)。
    


0
投票
http://codepad.org/59wmsi4g


0
投票
对您的输入进行测试:

Array ( [0] => Array ( [0] => 32 ) [1] => Array ( [0] => 16 [1] => 16 ) [2] => Array ( [0] => 8 [1] => 8 [2] => 8 [3] => 4 [4] => 4 ) )

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.