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 :: Циклы и массивы [2]

 PHP.SU

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


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

> Описание: Суммирование в цикле до определенного значения
Строитель Модератор
Отправлено: 22 Января, 2017 - 17:59:18
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




Stibaslo пишет:
Во втором варианте сложнее (для меня) шесть массивов вложить. Буду пробовать!
Там во второй функции надо сделать изменения - вместо двух массивов дописать обработку для шести. Сейчас допишу.
(Добавление)
Stibaslo, исправил для шести массивов
Спойлер (Отобразить)
Код мне не нравится, но сперва надо выяснить, так ли он работает? Если да, то его можно будет допилить.
 
 Top
Строитель Модератор
Отправлено: 23 Января, 2017 - 23:04:05
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




Stibaslo, вот этот вариант вроде бы корректно вычисляет значение $m
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $a = [
  4.     [0.5, 0.5, 0.5, 0.5],
  5.     [0.5, 0.5, 0.5, 0.5],
  6.     [0.5, 0.5, 0.5, 0.5],
  7.     [0.5, 0.5, 0.5, 0.5],
  8.     [0.5, 0.5, 0.5, 0.5],
  9.     [0.5, 0.5, 0.5, 0.5],
  10.     [0.5, 0.5, 0.5, 0.5]
  11. ];
  12.  
  13. echo bypassArr($a); // 14
  14.  
  15.  
  16. function bypassArr($a, $out = 0) {
  17.     foreach ($a as $i) {
  18.         if (!is_array($i)) break;
  19.         $out = counter($i);
  20.     }
  21.    
  22.     return $out;
  23. }
  24.  
  25.  
  26. function counter(&$a) {
  27.     static $s, $m;
  28.    
  29.     $s += array_shift($a);
  30.    
  31.     if ($s >= 1) {
  32.         $s -= 1;
  33.         $m++;
  34.     }
  35.  
  36.     return (!empty($a) ? counter($a) : $m);
  37. }
  38.  
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB