Ошибка в получении минимальной цены через array_reduce

В переменной $data

array(1000) { [0]=> array(7) { ["id"]=> int(1) ["price"]=> string(7) "0.10467"... 

Пытаюсь найти минимальную цену

$minPrice = array_reduce($data, function($p, $c) {
  return ((float) $p['price'] > (float) $c['price']) ? $c : $p;
});

Получаю ошибку

Warning: Trying to access array offset on value of type null in C:\server\domains\localhost\app\controllers\products.php on line 93

93 строка это где return


Ответы (1 шт):

Автор решения: splash58

Вы неправильно распоряжаетесь аргументами функции и возвращаемым значением.

До php 7.2 остается проблема установки начального значения, заведомо большего, чем все цены в массиве. Позже можно подставить PHP_FLOAT_MAX

echo $minPrice = array_reduce($data, function($c, $i) {
  return ($c > (float) $i['price']) ? (float) $i['price'] : $c;
}, PHP_FLOAT_MAX);
→ Ссылка