基于简单条件消除数组项

时间:2016-01-01 19:19:03

标签: php arrays

我有一个数组,其中包含有关盒子,体积和重量的信息。

$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更小更重。

1 个答案:

答案 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]);
        }
    }
}