拉莫斯之舞
这是一种可能的解决方案。它用于array_walk_recursive查找SP_X与最小值关联的键SP_X,然后遍历数组以查找MIC_X与该键和值关联的SP_X键,最后它使用array_mapandarray_filter仅从原始数组中提取那些MIC_X键值:// 找到最小的 SP_X 值和它的键$min_sp = PHP_INT_MAX;$min_key = '';array_walk_recursive($array, function ($v, $k) use (&$min_sp, &$min_key) { if ($v < $min_sp) { $min_sp = $v; $min_key = $k; } });// find the MIC_X key corresponding to the min SP_X value$mic_key = '';foreach ($array as $fl) { foreach ($fl as $mic => $sp) { if (isset($sp[$min_key]) && $sp[$min_key] == $min_sp) { $mic_key = $mic; break 2; } }}// filter the array to get all the MIC_X values$out = array_map(function ($fl) use ($mic_key) { return array_filter($fl, function ($mic) use ($mic_key) { return $mic == $mic_key; }, ARRAY_FILTER_USE_KEY);}, $array);print_r($out);输出:Array( [FL_1] => Array ( [MIC_13] => Array ( [SP_16] => 4 ) ) [FL_2] => Array ( [MIC_13] => Array ( [SP_17] => 4 ) ) [FL_3] => Array ( [MIC_13] => Array ( [SP_18] => 1 ) ))3v4l.org 上的演示