简体   繁体   English

Php在二维数组中查找最小值的键

[英]Php find key for min value in 2D array

I have the following 2D array and I would like to get the key of the smalest value in the [0] column if done is equal to no我有以下二维数组,如果done等于no ,我想获取[0]列中最小值的键

$graph= array(
"CityA" => array(
    "0" => "1",
    "1" => "CityC",
    "done" => "no",
    ),
"CityB" => array(
    "0" => "4",
    "1" => "CityA",
    "done" => "no",
    ),
"CityC" => array(
    "0" => "5",
    "1" => "CityA",
    "done" => "no",
    ),
);

Try this,试试这个,

$arr = array_map(function($v){return $v[0];}, $graph);
$key = array_keys($arr, min($arr));

Here you go.干得好。

$tes = min( array_column( $graph, 0 ) );
$key = array_search( $tes, array_column( $graph, 0 ) );
$array_keys = array_keys($graph);

echo $array_keys[$key];

You should perform all of your checks in a single pass through your array.您应该在一次通过阵列时执行所有检查。

My snippet will provide the first qualifying (contains the lowest [0] value AND has a done value of no ) row's key.我的代码段将提供第一个符合条件的(包含最低的[0]值并且已done值为no )行的键。

Code: ( Demo )代码:(演示

$graph = [
    "CityB" => ["0" => "1", "1" => "CityA", "done" => "no"],
    "CityA" => ["0" => "1", "1" => "CityC", "done" => "no"],
    "CityD" => ["0" => "1", "1" => "CityD", "done" => "yes"],
    "CityC" => ["0" => "5", "1" => "CityA", "done" => "no"]
];

$result = [];
foreach ($graph as $key => $row) {
    if ($row['done'] === 'no' && (!isset($result[$key]) || $row[0] < $result[$key])) {
        $result[$key] = $row[0];
    }
}

echo key($result) ?? 'No "done => no" rows';

Output:输出:

CityB

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM