3v4l.org

run code in 300+ PHP versions simultaneously
<?php $array[] = array ( "weight" => "20" ); $array[] = array ( "weight" => "15" ); $array[] = array( "weight" =>"40" ); $array[] = array( "weight" =>"15" ); $array[] = array( "weight" =>"17" ); $array[] = array( "weight" =>"49" ); $array[] = array( "weight" =>"55" ); $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);
Output for 7.1.25 - 7.1.27, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.20, 8.3.0 - 8.3.8
array(5) { [0]=> array(3) { [0]=> string(2) "15" [1]=> string(2) "15" [2]=> string(2) "17" } [1]=> array(1) { [0]=> int(20) } [2]=> array(1) { [0]=> int(40) } [3]=> array(1) { [0]=> int(49) } [4]=> array(1) { [0]=> int(55) } }

preferences:
133.72 ms | 404 KiB | 165 Q