За последние 24 часа нас посетили 38623 программиста и 1284 робота. Сейчас ищут 1086 программистов ...

Умножить в цикле

Тема в разделе "PHP для новичков", создана пользователем shalx, 28 янв 2016.

  1. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Код (PHP):
    1. $ar = array(0,1,2,3,4,5,6,7,8,9,10); 
    как циклом умножить 1 на 2 потом 2 на три, 3 *4 и так далее

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    в итоге что должно быть?
    массив где элементы перемножены с соседями? или должно остаться одно число=результат всех этих перемножений?
     
  3. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Да хочу получить массив результатов
    Код (PHP):
    1. for($i=0;$i<=10; $i++)
    2. $arr[]=$ar[$i]; 
    и потом не знаю что делать
     
  4. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    задача странная. если умножать на ноль, то дальше все станет нулями в ячейках.
    незнаю что на самом деле нужно, вот пример. дальше сам:
    Код (PHP):
    1. $ar = array(0,1,2,3,4,5,6,7,8,9,10);
    2. for($i=0,$m=sizeof($ar)-1; $i<$m; ++$i) {
    3.   $ar[$i] *= $ar[$i+1];
    4. }
     
  5. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    В инпут получаю 20000 и 40% , и хочу собрать массив
    • 20000 ( 20000*40%)=8000 (20 000-8000)=12000
      12000 4800 7200
      7200 2880 4320
    и так далее до нуля , получается что хочу сделать формулу как в excel но средствами php, неделю уже думаю
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (PHP):
    1. $in = 20000;
    2. $proc = 40; // %
    3. $out = array();
    4. while ($in>0 ) {
    5.   $pay = ceil($in*$proc/100);
    6.   $rest = $in-$pay;
    7.   $out[] = [$in, $pay, $rest];
    8.   $in -= $pay;
    9. }
    10. echo '<pre>';
    11. foreach($out as $v) echo join("\t",$v)."\n"; 
    Код (Text):
    1. 20000   8000    12000
    2. 12000   4800    7200
    3. 7200    2880    4320
    4. 4320    1728    2592
    5. 2592    1037    1555
    6. 1555    622 933
    7. 933 374 559
    8. 559 224 335
    9. 335 134 201
    10. 201 81  120
    11. 120 48  72
    12. 72  29  43
    13. 43  18  25
    14. 25  10  15
    15. 15  6   9
    16. 9   4   5
    17. 5   2   3
    18. 3   2   1
    19. 1   1   0
     
  7. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Спасибо , а как получить массив такого вида
    Код (PHP):
    1. Array ( 
    2. [0]=>20000 8000 2000
    3. [1]=>12000 4800 7200
    4. [2]=>7200 2880 4320
    5. ) 
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    $out[] = [$in, $pay, $rest];
    заменить на
    $out[] = $in.' '.$pay.' '.$rest;
     
  9. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Код (PHP):
    1. $in = 20000;
    2. $proc = 40; // %
    3. $out = array();
    4. for($i=0;$i<=10; $i++){
    5.  $pay = ceil($in*$proc/100);
    6.   $rest = $in-$pay;    
    7.     $out[] = array($in.'/'.$pay.'/'.$rest);
    8.   $in -= $pay;
    9. }
    10. foreach($out as $v){
    11.     pre($v);    
    12.     } 
    Странно но pre не выводит

    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  10. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ты сам то понял что написал?) что за функция такая?
     
  11. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    На гуи пробуюc но чтото не то
     
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    я так понял ты мой код копировать не стал. свой пишешь. ну тогда дальше сам.
     
  13. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Идея ваша , я очень благодарен
     
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    идея в самом цикле while у меня.
    в твоем коде цикл for() и прочее.
     
  15. shalx

    shalx Новичок

    С нами с:
    15 фев 2014
    Сообщения:
    110
    Симпатии:
    0
    Возможно ли сделать это без циклов ?
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    конечно. только кода будет больше раз в 10
     
  17. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    А чем они вам насолили ?
    Прямо таки факториал. Вы бы так не писали, если в массиве окажутся цифры не по порядку, то это будет заблуждение.
    Фу.

    В итоге задача скатилась в какой-то треш с процентами.