Это так же ясно, как грязь, но я сделал это в качестве примера, что он работает без зацикливания.
Короче говоря, я использую min и array_intersect (_key), чтобы найти минимальные значения в столбцах (с array_column).
//split out the two columns
$col0 = array_column($data, 0);
$col1 = array_column($data, 1);
// find minimum value in each
$min0 = min($col0);
$min1 = min($col1);
// find what keys this minimum value is in of each array
$mincol0 = array_intersect($col0, [$min0]);
$mincol1 = array_intersect($col1, [$min1]);
// use the previous and compare with minimum value of the other column
$result[] = $data[array_keys(array_intersect_key($col1, $mincol0),min(array_intersect_key($col1, $mincol0)))[0]];
$result[] = $data[array_keys(array_intersect_key($col0, $mincol1),min(array_intersect_key($col0, $mincol1)))[0]];
Var_dump($result);
https://3v4l.org/dgbDK
Так как я совершенно неправильно понял вопрос.
Вот еще один ответ, все еще не нужно зацикливать весь массив.Это просто трата времени.
Зацикливать только уникальные значения столбца 0 и находить минимальное значение в столбце 1, используя array_intersect и array_intersect_key.
$col0 = array_column($data, 0);
foreach(array_unique($col0) as $item){
$intersect = array_intersect($col0, [$item]);
$res[] = min(array_intersect_key($data, $intersect));
}
var_dump($res);
https://3v4l.org/3UPQh