我有一个数组,其中包含有关盒子,体积和重量的信息。
$boxes = array('box1' => array('v' => 1.2, 'w' => 2.45),
'box2' => array('v' => 3.1, 'w' => 1.37),
'bigbox1' => array('v' => 6.2, 'w' => 5.45),
'box3' => array('v' => 2.15, 'w' => 2.94),
'smallbox1' => array('v' => 0.86, 'w' => 1.04),
'bigbox2' => array('v' => 11.3, 'w' => 10.9), ..);
我希望消除所有体积更大,重量更轻的盒子。 E. g。 box2将被淘汰,因为box1更小更重。
答案 0 :(得分:0)
你可以做的是使用2个foreach循环。
对于第一个foreach中的每个框,您再次遍历所有框,如果满足条件,则可以从$boxes
数组中取消设置。
$boxes = array(
'box1' => array('v' => 1.2, 'w' => 2.45),
'box2' => array('v' => 3.1, 'w' => 1.37),
'bigbox1' => array('v' => 6.2, 'w' => 5.45),
'box3' => array('v' => 2.15, 'w' => 2.94),
'smallbox1' => array('v' => 0.86, 'w' => 1.04),
'bigbox2' => array('v' => 11.3, 'w' => 10.9)
);
foreach ($boxes as $key => $box) {
foreach ($boxes as $b) {
if (($box['v'] > $b['v']) && ($box['w'] < $b['w'])) {
unset($boxes[$key]);
}
}
}