За последние 24 часа нас посетил 22821 программист и 1271 робот. Сейчас ищут 748 программистов ...

PHP операции с переменными в цикле

Тема в разделе "PHP для новичков", создана пользователем Михаил77, 16 окт 2019.

?

PHP операции с переменными в цикле (индексация)

  1. Ответ

    0 голосов
    0,0%
  2. Вариант

    0 голосов
    0,0%
Можно выбрать сразу несколько вариантов.
  1. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0
    Добрый день
    Подскажите пожалуйста как можно реализовать следующий функционал

    Есть массив $arrData

    $arrData = (
    array("date" => 2001, "price" => 3000, "percent" => 3),
    array("date" => 2002, "price" => "", "percent" => 5),
    array("date" => 2003, "price" => "", "percent" => 4),
    array("date" => 2004, "price" => "", "percent" => 2),
    array("date" => 2005, "price" => "", "percent" => 7),
    array("date" => 2006, "price" => "", "percent" => 3),
    );

    Нужно значение увеличить на все указанные в массиве проценты.
    Например, первая строка с ценой (price) 3000 * (3 / 100 +1) получаем 3090 (к 3000 прибавили 3 процента).
    Далее увеличенную цену на 3% которая составила - 3090 необходимо увеличить на следующий процент 5%, 3090 * (5 / 100 + 1) = 3244,5и так далее
    В конце массива должны получить что в 2006 году цена составит 3793,17
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Циклом for, но не с 0, а с 1. И запрашивать элемент с предыдущим индексом
     
  3. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0
    В таком случае он просто умножает 3000 по очереди на каждый процент,
    3000 * 3% = 3090
    3000 * 5% = 3150
    3000 * 4% = 3120
    3000 * 2% = 3060
    3000 * 7% = 3210
    3000 * 3% = 3090


    мне нужно чтобы нарастающим итогом,
    3000 * 3% = 3090
    3090 * 5% = 3244,5
    3244,5 * 4% = 3374,28
    3374,28 * 2% = 3441,77
    3441,77 * 7% = 3682,70
    3682,70 * 3% = 3793,17
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    С чего бы вдруг? Покажите код
     
  5. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. <?php
    2. $array = [
    3.   [ "date" => '2001', "price" => '3000','percent' => '3' ],
    4.   [ "date" => '2002', "price" => '', 'percent' => '5' ],
    5.   [ "date" => '2003', "price" => '', 'percent' => '4' ],
    6.   [ "date" => '2004', "price" => '', 'percent' => '2' ],
    7.   [ "date" => '2005', "price" => '', 'percent' => '7' ],
    8.   [ "date" => '2006', "price" => '', 'percent' => '3' ]
    9. ];
    10.  
    11. $price = $array[0]["price"];
    12.  
    13. foreach($array as $key => $val)
    14. {
    15.   if( isset( $array[$key + 1] ) )
    16.   {
    17.     $price = $price * ($val["percent"]/ 100 + 1);
    18.     $array[$key + 1]["price"] =  $price;
    19.   }
    20.  
    21. }
    22.  
    23. print_r($array);
    24. /*Array
    25. (
    26. [0] => Array
    27. (
    28. [date] => 2001
    29. [price] => 3000
    30. [percent] => 3
    31. )
    32.  
    33. [1] => Array
    34. (
    35. [date] => 2002
    36. [price] => 3090
    37. [percent] => 5
    38. )
    39.  
    40. [2] => Array
    41. (
    42. [date] => 2003
    43. [price] => 3244.5
    44. [percent] => 4
    45. )
    46.  
    47. [3] => Array
    48. (
    49. [date] => 2004
    50. [price] => 3374.28
    51. [percent] => 2
    52. )
    53.  
    54. [4] => Array
    55. (
    56. [date] => 2005
    57. [price] => 3441.7656
    58. [percent] => 7
    59. )
    60.  
    61. [5] => Array
    62. (
    63. [date] => 2006
    64. [price] => 3682.689192
    65. [percent] => 3
    66. )
    67.  
    68. )*/
    --- Добавлено ---
    ну или так
    PHP:
    1. <?php
    2. $array = [
    3.   [ "date" => '2001', "price" => '3000','percent' => '3' ],
    4.   [ "date" => '2002', "price" => '', 'percent' => '5' ],
    5.   [ "date" => '2003', "price" => '', 'percent' => '4' ],
    6.   [ "date" => '2004', "price" => '', 'percent' => '2' ],
    7.   [ "date" => '2005', "price" => '', 'percent' => '7' ],
    8.   [ "date" => '2006', "price" => '', 'percent' => '3' ]
    9. ];
    10.  
    11. $price = '';
    12.  
    13. foreach($array as $key => $val)
    14. {
    15.   if( $key == 0)
    16.   {
    17.     $price = $val["price"];
    18.   }
    19.   else
    20.   {
    21.     $price = $price * ($val["percent"]/ 100 + 1);
    22.     $array[$key]["price"] =  $price;
    23.   }
    24.  
    25. }
    26.  
    27. print_r($array);
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    PHP:
    1. for ($i = 1; $i < count($array); $i++) {
    2.    $array[$i]["price"] = $array[$i - 1]["price"] * ($array[$i - 1]["percent"] / 100 + 1);
    3. }
     
    #6 mkramer, 16 окт 2019
    Последнее редактирование: 16 окт 2019
  7. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0





    Большое Вам спасибо
    Вы очень помогли
    Отличный вариант
     
  8. Михаил77

    Михаил77 Активный пользователь

    С нами с:
    16 окт 2019
    Сообщения:
    31
    Симпатии:
    0
    И за этот ответ большое спасибо!
     
  9. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405