Я довольно новичок в php, и у меня проблемы с циклами. У меня есть петля foreach,
foreach ($contents as $g => $f) { p($f); }
который дает некоторые массивы, в зависимости от того, сколько у меня содержимого. в настоящее время у меня есть 2,
Array ( [quantity] => 1 [discount] => 1 [discount_id] => 0 [id] => 1506 [cat_id] => 160 [price] => 89 [title] => კაბა ) Array ( [quantity] => 1 [discount] => 1 [discount_id] => 0 [id] => 1561 [cat_id] => 160 [price] => 79 [title] => ზედა )
моя цель – сохранить массив, который имеет максимальную цену в нем как другую переменную. Я как бы зациклился на том, как это сделать, мне удалось найти максимальную цену с помощью функции max()
foreach ($contents as $g => $f) { $priceprod[] = $f['price']; $maxprice = max($priceprod); p($maxprice); }
но я до сих пор не понимаю, как я должен узнать, в каком массиве максимальная цена. Мы ценим любые предложения
Вы также должны хранить ключи, чтобы вы могли просмотреть их после цикла:
$priceprod = array(); foreach ($contents as $g => $f) { // use the key $g in the $priceprod array $priceprod[$g] = $f['price']; } // get the highest price $maxprice = max($priceprod); // find the key of the product with the highest price $product_key = array_search($maxprice, $priceprod); $product_with_highest_price = $contents[$product_key];
Обратите внимание, что результаты будут ненадежными, если есть несколько продуктов с одинаковой ценой.
Проверьте максимальную функцию для массива вне цикла.
foreach ($contents as $g => $f) { $priceprod[] = $f['price']; } $maxprice = max($priceprod); p($maxprice);
Здесь у вас есть решение с одним циклом, обрабатывающее несколько элементов с одинаковой максимальной ценой.
$maxPrice = - INF; $keys = []; foreach($contents as $k=>$v){ if($v['price']>$maxPrice){ $maxPrice = $v['price']; $keys = [$k]; }else if($v['price']==$maxPrice){ $keys[] = $k; } }