Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Выбор наименьшего значения из цикла foreach
Форумы портала PHP.SU » » Вопросы новичков » Выбор наименьшего значения из цикла foreach

Страниц (1): [1]
 

1. ITmaker - 30 Апреля, 2014 - 21:40:12 - перейти к сообщению
Здравствуйте уважаемые форумчане.

В PHP я новичок, и не могу реализовать правильно следующий алгоритм:

1. Перебор массива и вывод результатов в другой массив.
2. Извлечь из полученного массива наименьшее число.

Это скрипт в интернет магазине, вытягиваем массив цен товаров и выводим наименьшее.

Вот код цикла перебора и вывода поочередно цен на все товары.

<?php foreach ($pds as $p) { ?>
<?php $p_all = $this->model_catalog_product->getProduct($p['product_id']); ?>
<?php if (!$p_all['special']) { ?> // Если на товар акция
<?php echo round($p_all['price']); ?> // Вывод обычной цены
<?php } else { ?>
<?php echo round($p_all['special']); ?> // Вывод скидочной цены
<?php } ?>
<?php } ?>

Результатом выполнения этого цикла является строка со значениями цен.
А вывести нужно только одно, наименьшее.

Оч благодарен за любую помощь.
2. KingStar - 30 Апреля, 2014 - 22:22:45 - перейти к сообщению
сортируешь массив с помощью asort и первый ключ будет с минимальным значением
3. LIME - 30 Апреля, 2014 - 22:52:28 - перейти к сообщению
min()
вряд ли массив отсортируется в 1 проход
4. ITmaker - 01 Мая, 2014 - 10:26:51 - перейти к сообщению
Насчет выборки с помощью min я понял, а вот как правильно написать? Интересует синтаксис именно в данном случае. Если бы был простой массив, то это не было бы для меня проблемой.
5. LIME - 01 Мая, 2014 - 12:41:01 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP $min = 999999; ?>
  2. <?PHP foreach ($pds as $p) { ?>
  3. <?PHP $p_all = $this->model_catalog_product->getProduct($p['product_id']); ?>
  4. <?PHP if (!$p_all['special']) { ?> // Если на товар акция
  5. <?PHP echo round($p_all['price']); ?> // Вывод обычной цены
  6. <?PHP  $min = $p_all['price'] < $min ? $p_all['price']  : $min; ?>
  7. <?PHP } else { ?>
  8. <?PHP echo round($p_all['special']); ?> // Вывод скидочной цены
  9. <?PHP  $min = $p_all['special'] < $min ? $p_all['special']  : $min; ?>
  10. <?PHP } ?>
  11. <?PHP } ?>
  12. <?PHP echo $min; ?>
6. ITmaker - 01 Мая, 2014 - 13:43:38 - перейти к сообщению
Огромное спасибо LIME! Очень выручили.

 

Powered by ExBB FM 1.0 RC1