Добрый день Подскажите пожалуйста как можно реализовать следующий функционал Есть массив $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
В таком случае он просто умножает 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
PHP: <?php $array = [ [ "date" => '2001', "price" => '3000','percent' => '3' ], [ "date" => '2002', "price" => '', 'percent' => '5' ], [ "date" => '2003', "price" => '', 'percent' => '4' ], [ "date" => '2004', "price" => '', 'percent' => '2' ], [ "date" => '2005', "price" => '', 'percent' => '7' ], [ "date" => '2006', "price" => '', 'percent' => '3' ] ]; $price = $array[0]["price"]; foreach($array as $key => $val) { if( isset( $array[$key + 1] ) ) { $price = $price * ($val["percent"]/ 100 + 1); $array[$key + 1]["price"] = $price; } } print_r($array); /*Array ( [0] => Array ( [date] => 2001 [price] => 3000 [percent] => 3 ) [1] => Array ( [date] => 2002 [price] => 3090 [percent] => 5 ) [2] => Array ( [date] => 2003 [price] => 3244.5 [percent] => 4 ) [3] => Array ( [date] => 2004 [price] => 3374.28 [percent] => 2 ) [4] => Array ( [date] => 2005 [price] => 3441.7656 [percent] => 7 ) [5] => Array ( [date] => 2006 [price] => 3682.689192 [percent] => 3 ) )*/ --- Добавлено --- ну или так PHP: <?php $array = [ [ "date" => '2001', "price" => '3000','percent' => '3' ], [ "date" => '2002', "price" => '', 'percent' => '5' ], [ "date" => '2003', "price" => '', 'percent' => '4' ], [ "date" => '2004', "price" => '', 'percent' => '2' ], [ "date" => '2005', "price" => '', 'percent' => '7' ], [ "date" => '2006', "price" => '', 'percent' => '3' ] ]; $price = ''; foreach($array as $key => $val) { if( $key == 0) { $price = $val["price"]; } else { $price = $price * ($val["percent"]/ 100 + 1); $array[$key]["price"] = $price; } } print_r($array);
PHP: for ($i = 1; $i < count($array); $i++) { $array[$i]["price"] = $array[$i - 1]["price"] * ($array[$i - 1]["percent"] / 100 + 1); }