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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
ITmaker
Отправлено: 30 Апреля, 2014 - 21:40:12
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Здравствуйте уважаемые форумчане.

В 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 } ?>

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

Оч благодарен за любую помощь.
 
 Top
KingStar
Отправлено: 30 Апреля, 2014 - 22:22:45
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




сортируешь массив с помощью asort и первый ключ будет с минимальным значением


-----
То что программа работает, не означает что она написана правильно!
 
 Top
LIME
Отправлено: 30 Апреля, 2014 - 22:52:28
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




min()
вряд ли массив отсортируется в 1 проход
 
 Top
ITmaker
Отправлено: 01 Мая, 2014 - 10:26:51
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Насчет выборки с помощью min я понял, а вот как правильно написать? Интересует синтаксис именно в данном случае. Если бы был простой массив, то это не было бы для меня проблемой.
 
 Top
LIME
Отправлено: 01 Мая, 2014 - 12:41:01
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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; ?>

(Отредактировано автором: 01 Мая, 2014 - 12:43:08)

 
 Top
ITmaker
Отправлено: 01 Мая, 2014 - 13:43:38
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Огромное спасибо LIME! Очень выручили.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB