У меня есть массив, содержащий информацию о коробках, их объеме и весе.

$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), ..);

Я хотел бы исключить все коробки, которые имеют больший объем и меньший вес одновременно, чем любая другая. Например, ящик2 будет исключен, потому что ящик1 меньше и тяжелее.

Alexis

Ответов: 1

Ответы (1)

Вы можете использовать 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]);
        }
    }
}

2022 WebDevInsider