Как получить ключ самого большого элемента в 2d массиве в PHP - PullRequest
2 голосов
/ 19 апреля 2020

Пример массива

$array[0][0] = 5323;
$array[0][1] = 5346;
$array[0][2] = 5424;
$array[1][0] = 6000;
$array[1][1] = 5412;
$array[1][2] = 5543;
$array[2][0] = 5651;
$array[2][1] = 7000;
$array[2][2] = 5254;

Таким образом, самый большой элемент в этом массиве имеет значение 7000; Как получить его ключи X и Y? (как в $ array [X] [Y], так что в этом случае это будет x = 2 и y = 1);

Ответы [ 2 ]

2 голосов
/ 19 апреля 2020

Вы можете просто l oop через массив и сохранить xy, когда вы получите новое максимальное значение.

Я запускаю max с минимально возможного числа, и оттуда он зацикливает массив и обновляет переменные, если значение больше предыдущего максимума.

$max = PHP_INT_MIN;

foreach($array as $key => $subarray){
    foreach($subarray as $subkey => $value){
        if($value > $max){
            $x = $key;
            $y = $subkey;
            $max = $value;
        }
    }
}

https://3v4l.org/5hHXP

0 голосов
/ 20 апреля 2020

Одним из подходов может быть создание строки из вашего текущего массива, а затем создание массива всех значений в строке и получение максимального значения с помощью собственной функции max для массива PHP:

$na = '';
foreach($array as $arr) {
    $na .= implode(',',$arr) . ',';
}
$max_value = max(explode(',',$na));

foreach($array as $x=>$arr) {
    $y = array_search($max_value, $arr);    
    if ($y !== false) break;
}

Тогда ваши значения будут в $ x, $ y и $ max_value

...