Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中呼出一个可用的运算符_Php_Echo_Operator Keyword - Fatal编程技术网

在PHP中呼出一个可用的运算符

在PHP中呼出一个可用的运算符,php,echo,operator-keyword,Php,Echo,Operator Keyword,假设我有以下代码: $operator = "+"; $num1 = 10; $num2 = 32; echo "the sum of " . $num1 . " and " . $num2 . " is " . ($num1.$operator.$num2); 正如您所看到的,我试图使用一个变量通过连接它来定义操作符。但是,当运行此代码时,操作员显示为纯文本,而不是用于回答问题 很明显,我得到这样的输出:“10和32之和是10+32” 我肯定做错了什么吗?尽量避免评估。但以下是使用eval

假设我有以下代码:

$operator = "+";
$num1 = 10;
$num2 = 32;

echo "the sum of " . $num1 . " and " . $num2 . " is " . ($num1.$operator.$num2);
正如您所看到的,我试图使用一个变量通过连接它来定义操作符。但是,当运行此代码时,操作员显示为纯文本,而不是用于回答问题

很明显,我得到这样的输出:“10和32之和是10+32”


我肯定做错了什么吗?

尽量避免评估。但以下是使用eval进行评估的答案:

<?php

$operator = '+';
$num1 = 10;
$num2 = 32;

eval(sprintf('echo %d %s %d;', $num1, $operator, $num2));

你说的错是什么意思?您刚刚告诉PHP要准确地输出该字符串。否则,请不要使用
eval
。使用
开关
案例。这样更安全。
$operator = '+';
$num1 = 10;
$num2 = 32;

switch ($operator) {
    case '+':
        $result = $num1 + $num2;
        break;
    case '-':
        $result = $num1 - $num2;
        break;
    case '*':
        $result = $num1 * $num2;
        break;
    case '/':
        $result = $num1 / $num2;
        break;
    default:
        echo "Invalid operator";
        break;
}

echo 'Result: ' . $result;