[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по наполнению массива
maximka787
Парни привет. Чёт застрял на самом простом... Мозг затормозил...

Есть массив array(1,2,3)

Нужно к каждому элементу прибавить значение предыдущего + 30%.

Задаем цифру 100, первому элементу значение 30% от ста. Второму элементу надо дать 30% от значения предыдущего и так по кругу, по всем 3-м элементам.

Должно получиться

array(
1 => 30,
2 => 39,
3 => 41,7
)

На самом деле механизм сложнее, но мне понять. как проще. Я делаю рекурсией, но пока не сделал. Циклы foreach, while в идеале использовать, но либо я туплю, либо они тут не катят.


_____________
..Работает - не трогай!
AllesKlar
определись с ТЗ
Цитата
Нужно к каждому элементу прибавить значение предыдущего + 30%.

или
Цитата
Задаем цифру 100, первому элементу значение 30% от ста. Второму элементу надо дать 30% от значения предыдущего и так по кругу, по всем 3-м элементам.

Просто 30% от предыдущего или 130% от предыдущего?

$n = 100;
$arr[0] = $n * 0.3;
for( $i = 1; $i < count($arr); $i++)
{
$arr[$i] = $arr[$i - 1] * 1.3;
}


_____________
[продано копирайтерам]
SoMeOnE
вместо циклов думаю лучше использовть http://php.net/manual/ru/function.array-walk-recursive.php
AllesKlar
SoMeOnE
Зачем? Чтобы кода было больше?
Там 3 строки, включая цикл.

_____________
[продано копирайтерам]
maximka787
AllesKlar
Да, все верно. Оказывается можно и без рекурсии.

А можете подсказать, более конкретно. Там чуть чуть не так.

Мне нужно сделать вот как:

есть 3 элемента.

Первому элементу присваиваем 60% от 100 (100 это 100%).
второму 60% от первого
третьему 60% от второго.

_____________
..Работает - не трогай!
AllesKlar
maximka787
ээээ, ты серьёзно?
Это же изучают на уроках математики. Не на алгебре, а еще на математике. Тема - пропорции.

Ну, раз всё так плохо, вот тебе универсальное решение.
$n = 100; // начальное число.
$p = 60; // процент.
$arr[0] = $n / 100 * $p;
for( $i = 1; $i < count($arr); $i++)
{
$arr[$i] = $arr[$i - 1] / 100 * $p;
}


И про 90% даже не спрашивай, не буду делать.

_____________
[продано копирайтерам]
maximka787
AllesKlar
Благодарю.

Ты не поверишь, но я забыл совсем про [$i - 1]

ну хоть убей) полез в рекурсию.

_____________
..Работает - не трогай!
SoMeOnE
AllesKlar
Я замеры не делал. Но думаю выигрыш в скорости будет) На трех элементах)))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.