1 回答

TA貢獻1820條經驗 獲得超10個贊
這是一種可能的解決方案。它用于array_walk_recursive
查找SP_X
與最小值關聯的鍵SP_X
,然后遍歷數組以查找MIC_X
與該鍵和值關聯的SP_X
鍵,最后它使用array_map
andarray_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
)
)
)
- 1 回答
- 0 關注
- 120 瀏覽
添加回答
舉報