Добрый день. Есть строка с парами вида 1000:2, 5000:3 (числа заведомо неизвестны, количество пар заведомо тоже неизвестно) Как на php производить математические вычисления, если брать данные из строки? Например, задать условие: Если переменная $summa равна или больше 1000, то уменьшить её на 2%, если переменная равна или больше 5000, то уменьшить на 3%. Спасибо
разбить строку на массив пар сделать вычисления в цикле PHP: $summa = 4500; $arr = explode(",",$str); foreach ($arr AS $a) { $m = explode(":",$a); $out = ($summa>=$m[0]) ? ($summa/100)*$m[1] : $summa; } echo $out;
Здорово. Попробовал, работает. Но как только вписываю вторую пару, первая дает сбой. --- Добавлено --- Я так понимаю, вся загвоздка в условиях...
все зависит от ваших пар и числа то есть если 1000:2, 5000:3 и число 5500.... то сначала сработает первая пара, так как подходит под условия потом сработает вторая пара - так как тоже подходит - в итоге всегда будет последняя пара которая подходит условию в вашей постановке задачи ничего и не указано как в таких случаях считать может вам массив надо ... чтоб для каждой пары вычислялось, а может еще чего
вся загвоздка в том, что нужно тыкнуть мышкой по слову explode в коде выше и почитать, что он делает. Затем, если необходимо, почитать про foreach (гугл умеет быстро искать такие слова). Это поможет осознать саму суть реализации. После всего можно сделать всё самому. И последним пунктом получить мощный впрыск гормонов радости в камеру сгорания головного мозга.
Все верно, пары должны работать последовательно. Тестирую... То есть, если число между 1000 и 5000, $out становится равной $summa. --- Добавлено --- Прошу прощения... немного затормозил, увидел ошибку
Если переменная от 1000 до 4999, то уменьшаем на 2% если переменная равна 5000 и больше, то на 3% если менее 1000, то не уменьшаем. Предложенный код тестирую, но если сумма от 1000 до 4999, то не уменьшается на 2%
Что именно? Работает по первому алгоритму... Вторая пара так же подходит. Я ж говорил будет работать последняя. Четко сформулируйте что именно вы хотите в общем случае...
Я правильно понял, что ваш вариант для случая: Если переменная от 1000 до 4999, то уменьшаем на 2% если переменная равна 5000 и больше, то на 3% если менее 1000, то не уменьшаем. ???? --- Добавлено --- И не понял, что заменить на Код (Text): If ($summa>=$m[0]) $out =($summa/100)*$m[1]:
Если идет речь замены Код (Text): $out = ($summa>=$m[0]) ? ($summa/100)*$m[1] : $summa; на Код (Text): If ($summa>=$m[0]) $out =($summa/100)*$m[1]: , то выдает синтаксическую ошибку unexpected ':'