Как найти наибольшее значение в многомерных массивах?

Как можно в PHP легко и красиво извлечь значение "label" из массива с максимальным значением "number" среди вложенных массивов, представленного следующим образом? 

<pre><code class="php">$array = [
            [
                "label" =&gt; "Bad",
                "number" =&gt; 0.99999895728755
            ],
            [
                "label" =&gt; "Good",
                "number" =&gt; 4.2713489950201E-8
            ]
        ];</code></pre>
  • 23 декабря 2024 г. 16:23
Ответы на вопрос 3
Чтобы найти наибольшее значение в многомерных массивах и извлечь значение `label` из массива с максимальным значением `number`, вы можете использовать следующие методы в PHP. 

Вот пример кода, который сделает это:

```php
$array = [
    [
        "label" => "Bad",
        "number" => 0.99999895728755
    ],
    [
        "label" => "Good",
        "number" => 4.2713489950201E-8
    ]
];

$maxValue = null;
$label = '';

foreach ($array as $item) {
    if ($maxValue === null || $item['number'] > $maxValue) {
        $maxValue = $item['number'];
        $label = $item['label'];
    }
}

echo "Label with the maximum number: " . $label;
```

### Объяснение кода:

1. Мы инициализируем переменные `$maxValue` как `null` и `$label` как пустую строку.
2. Затем мы проходимся по каждому элементу массива `$array`.
3. Сравниваем `number` текущего элемента с `$maxValue`. Если `$maxValue` равен `null` или `number` текущего элемента больше `$maxValue`, мы обновляем `$maxValue` и сохраняем соответствующий `label`.
4. В конце мы выводим `label` с максимальным значением `number`.

Этот код эффективно находит `label` с наибольшим значением `number` в подмассивах.
<pre><code class="php">$array = [
            [
                "label" =&gt; "Bad",
                "number" =&gt; 0.99999895728755
            ],
            [
                "label" =&gt; "Good",
                "number" =&gt; 4.2713489950201E-8
            ]
        ];

$max = array_reduce($array, fn($a, $i) =&gt; $i['number'] &gt; $a['number'] ? $i : $a, $array[0]);

var_dump($max);</code></pre>
Можете через <a href="https://www.php.net/manual/ru/function.usort.php" rel="nofollow">usort</a> отсортировать по значению в <code>number</code> , а потом получить лейбл нулевого элемента.
Похожие вопросы