Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果数组总数接近php的指定值,如何拆分数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

如果数组总数接近php的指定值,如何拆分数组

如果数组总数接近php的指定值,如何拆分数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这样结构的数组数据 Array ( [0] => Array ( [weight] => 20 ) [1] => Array ( [weight] => 15 ) [2] => Array ( [weight] => 40 ) ) 如果每个零件的总重量接近50,如何

我有这样结构的数组数据

Array
(
    [0] => Array
        (
            [weight] => 20
        )
    [1] => Array
        (
            [weight] => 15
        )
    [2] => Array
        (
            [weight] => 40
        )
)
如果每个零件的总重量接近50,如何从该阵列中制作零件

我试过使用array_split,但这似乎不是正确的方法

这是我的密码

<?php

$array = array();

$array[] = array
        (
            "weight" => "20"
        );
$array[] = array
        (
            "weight" => "15"
        );

$array[] = array(
            "weight" =>"40"
        );


echo "<pre>";


$arr= array_chunk($array,2);
print_r($arr);

?>

我想要这样的结果


使用array\u列展平数组,以便轻松排序。
然后循环数组,只要值小于50,就继续添加到新数组中,如果值大于50,则在新数组中创建一个新数组项

$arr=array\u列($array,“weight”);
排序($arr);
$i=0;
$new[0]=[];
外汇($arr作为$val){

if(数组_和($new[$i])+$val不知道你在问什么。你能提供你的预期输出吗?目前你的问题不清楚。你的问题不清楚,预期输出?对不起,我的英语不好,,,,我已经编辑了我的askDo。你想将它们分组,以便组中的权重总和低于50,即,添加另一项会使总和达到v值大于50?谢谢..,但是如何像往常一样显示数组项echo。您的问题中没有包括这一点。
echo内爆(
“,$new);
我已经显示了我想要的示例结果…,很抱歉,在此之前我编辑了我的提问。exmaple结果请参见编辑的代码。现在我只是将值添加到多维数组中,而不是在循环中对其求和。
$arr = array_column($array, "weight");
sort($arr); 

$i= 0;
$new[0]= [];
foreach($arr as $val){
    if(array_sum($new[$i]) + $val <50){
        $new[$i][] = $val;
    }else{
        $i++;
        $new[$i][] = (int) $val;
    }
}

var_dump($new);