Какой тип арифметических операторов (+ - / *) есть в PHP? - PullRequest
1 голос
/ 01 февраля 2012

Какого типа арифметические операторы (+ - / *) имеют в PHP? У меня такая ситуация:

$argX= "1";
$argY = "2";
$operator = "+";

Я хочу сложить два аргумента, используя оператор в переменной. Что-то вроде этого:

$result = $argX $operator $argY;

Я знаю, что аргументы - это строки, поэтому я сначала конвертирую их в числа.

$argX = $argX+0;
$argY = $argY+0;

Но во что я должен преобразовать $operator, чтобы добавить аргументы, используя значение переменной $operator? Как это возможно?

Ответы [ 4 ]

6 голосов
/ 01 февраля 2012

Нет, это невозможно.Вы не можете использовать выражения для операторов в PHP.Операторы - это операторы, у них нет типа.Вам придется сделать что-то вроде этого:

switch ($operator) {
    case '+' :  $result = $argX + $argY; break;
    case '-' :  $result = $argX - $argY; break;
    ...
}

Вы можете eval, но я бы не рекомендовал это.

3 голосов
/ 01 февраля 2012

вы не можете сделать это, однако вы могли бы сделать

if($operator == '+')
{
    //math
}
1 голос
/ 01 февраля 2012

Что-то вроде:

// allowed operators
$allowed = array('+','-','/','*','%');

// check to see that operator is allowed and that the arguments are numeric
// so users can't inject cheeky stuff
if(in_array($operator, $allowed) && is_numeric($argX) && is_numeric($argY)){
    eval('<?php $result = '.$argX.' '.$operator.' '.$argY.'; ?>');
}
0 голосов
/ 31 января 2015

Разве функция с оператором не будет работать?

function operator($X, $Y) {
    $Z = $X + $Y;
    return $Z
}

$Z = operator($X,$Y);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...