Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
7 / 7 / 6
Регистрация: 05.03.2012
Сообщений: 91

Как подставить данные и посчитать?

07.02.2017, 20:44. Показов 715. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Нужна помощь...
Есть данные:
PHP
1
2
3
4
5
6
$data = [
    "abc321" => "100", 
    "def654" => "50"
];
 
$sum = "abc321+def654"; // Формула может быть абсолютно любой с делением, умножением и т.д.
Как получить следующий результат?
PHP
1
$sum = "150";
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2017, 20:44
Ответы с готовыми решениями:

Как данные из формы подставить в ссылку?
Всем добрый вечер, прошу помощи, так как сама это сделать не могу, хотя это может быть и элементарно, не спорю. Такая задача у меня....

Как правильно подставить в запрос SQL данные из TextBox
Приветствую Всех! Народ подскажите пожалуйста, есть запрос к одной из таблиц по русски звучит так, вывести несколько столбцов из таблицы...

Как подставить в значение переменной, данные взятые из таблицы mysql
Здравствуйте. (C# VS2013)Есть такая задача, запускать exe фаил с параметрами, один из которых должен быть переменной, значение которой...

8
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
07.02.2017, 21:06
PHP
1
echo $sum = array_sum($data);
0
7 / 7 / 6
Регистрация: 05.03.2012
Сообщений: 91
07.02.2017, 21:10  [ТС]
Пифагор, Формула может быть абсолютно любой с делением, умножением и т.д.

Как быть с такой формулой?
PHP
1
2
3
4
5
6
7
$data = [
    "abc321" => "100", 
    "def654" => "50",
    "gjo987" => "2"
];
 
$sum = "(abc321-def654)+abc321*gjo987";
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
07.02.2017, 21:16
Цитата Сообщение от Groz Посмотреть сообщение
Как получить следующий результат?
Я сделал ровно то, что Вы просили.
Цитата Сообщение от Groz Посмотреть сообщение
Как быть с такой формулой?
PHP
1
echo $sum = ($data['abc321']-$data['def654'])+$data['abc321']*$data['gjo987'];
0
7 / 7 / 6
Регистрация: 05.03.2012
Сообщений: 91
07.02.2017, 21:26  [ТС]
Всё что вы отвечаете очевидно! Об этом вряд ли кто спрашивал бы...

Формула в переменной - она так и есть формула, которая дана именно в таком формате, в каком она есть в переменной (такое может произойти, например при выводе из базы данных)

Всё! У нас есть данные и формула:
PHP
1
2
3
4
5
6
7
$data = [
    "abc321" => "100", 
    "def654" => "50",
    "gjo987" => "2"
];
 
$sum = "(abc321-def654)+abc321*gjo987";
Как преобразовать строку "(abc321-def654)+abc321*gjo987" в формулу понятную для PHP с подстановкой данных из массива, если идентификатор значения в формуле соответствует ключу?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
07.02.2017, 21:27
Groz, оговорюсь сразу, использовать функцию eval() не советуется в реальных проектах в целях безопасности.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function calculate($formula, array $params) {
    $result = $formula;
    foreach ($params as $key => $value) {
        $result = str_replace($key, $value, $result);
    }
    ob_start();
    eval("echo $result;");
    return ob_get_clean();
}
 
$data = [
    "abc321" => "100",
    "def654" => "50",
    "gjo987" => "2"
];
 
$sum = "(abc321-def654)+abc321*gjo987";
 
echo calculate($sum, $data); // 250
1
7 / 7 / 6
Регистрация: 05.03.2012
Сообщений: 91
07.02.2017, 21:33  [ТС]
Kerry_Jr, То что нужно! Благодарю за помощь!
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
08.02.2017, 12:32
Еще вот такое решение
PHP
1
2
3
4
$_ = preg_replace_callback("~(\\w+)~",function($m) use (&$data){
        return $data[$m[1]];
},$sum);
echo eval("echo $_;");
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.02.2017, 12:42
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
PHP
1
2
3
foreach ($params as $key => $value) {
        $result = str_replace($key, $value, $result);
    }
PHP
1
$result = strtr($result, $params);
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2017, 12:42
Помогаю со студенческими работами здесь

Как подставить данные в поле таблицы из другой таблицы
Есть база в которой три таблицы: --отделения, --исполнители и --оказанная помощь. На данный момент в таблице оказанная...

Подставить данные, сравнивая 2 столбца
Доброго времени суток! Уважаемые форумчане, окажите пожалуйста помощь... В написании макросов - дилетант (((...поэтому обращаюсь за...

Подставить данные в соответствии с датой
Есть карточка учета работы автомобиля. Во вкладке день, мне нужно чтобы поставив дату формула автоматически заполнила поля по машинам за...

Подставить данные из одной таблицы в другую
например id name id_tablici2 1 vasia 3 2 lena 3 ...

Подставить данные из другой таблицы по 2 параметрам
Добрый день попробую описать задачу. Необходимо подставить данные из одной таблице в другую таблицу, но прежде чем подставить необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru