加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 数组按值划分/拆分

发布时间:2020-12-13 17:05:08 所属栏目:PHP教程 来源:网络整理
导读:$a = array(8,16,32,8,4,4); 使用像上面那样的数组有一种方法,所以我可以根据总和达到设定值的值来划分/拆分数组.例如,如果我希望它们等于32.我的最终数组将有多达100个值,所有值都是32,8或4,我只需要对项目进行分组,使得值始终等于设定量,因此在此示例中为3
$a = array(8,16,32,8,4,4);

使用像上面那样的数组有一种方法,所以我可以根据总和达到设定值的值来划分/拆分数组.例如,如果我希望它们等于32.我的最终数组将有多达100个值,所有值都是32,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

因为$a [0]总计最多32,所以$a [1]和$a [2].

解决方法

$a = array(8,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)时.

测试:http://codepad.org/5j5nl3dT

注意:|意味着分裂.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读