Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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_Arrays - Fatal编程技术网

Php 如何在数组中放置运算符?

Php 如何在数组中放置运算符?,php,arrays,Php,Arrays,我想做一个简单的程序来改变一些数字的运算符“+”、“-”、“*”、“/”。所以,我将运算符放入数组中,并尝试通过循环迭代它们 $num1 = 10; $num2 = 20; $operators = array("+", "-", "*", "/"); for ($x=0;$x<=count($operators)-1;$x++){ echo $num1 . $operators[$x] . $num2 . "</br>"; } 乍一看,这似乎还可以,但我需要计算数字,执行

我想做一个简单的程序来改变一些数字的运算符“+”、“-”、“*”、“/”。所以,我将运算符放入数组中,并尝试通过循环迭代它们

$num1 = 10;
$num2 = 20;
$operators = array("+", "-", "*", "/");
for ($x=0;$x<=count($operators)-1;$x++){
echo $num1 . $operators[$x] .  $num2 . "</br>";
}

乍一看,这似乎还可以,但我需要计算数字,执行操作,简单地说,我需要最终结果数字,这给了我4个字符串。我理解其中的原因:我在$operators数组中的值是字符串,而不是实数运算符。我的问题是,如何在数组中放置实数运算符,或者,我可以将它们作为字符串保存在数组中,但在输出时以某种方式将它们转换为实数运算符?这两种策略的解决方案都是受欢迎的。提前谢谢

也许你可以尝试以下几点:

for ( $x=0; $x < count($operators); $x++ ){
    switch($operators[$x]){
        case '+':$answer=$num1+$num2;break;
        case'-':$answer=$num1-$num2;break;
        case '*':$answer=$num1*$num2;break;
        case'/':$answer=$num1/$num2;break;
    }
    echo $answer;
}
for($x=0;$x
不能在数组中放入实数运算符,因为它是语言构造。但是您可以这样放置函数(我使用匿名函数,您可以使用命名函数)

你可以试试这个

$num1 = 10;
$num2 = 20;

$operators = array("+", "-", "*", "/");
for ($x=0;$x<=count($operators)-1;$x++){
    echo eval('return '.$num1 . $operators[$x] .  $num2 . ';')."</br>";
}
$num1=10;
$num2=20;
$operators=数组(“+”、“-”、“*”、“/”);

感谢你的帮助,$x=0;$x可能是重复的。我访问了该页面,但对我来说不起作用,因为我在回答RamRaider时给出了原因。再次感谢。为了这个问题,我简化了我的脚本,但实际上我的目标是迭代4个数字的所有组合(不会重复)使用数学运算符。因此,如果脚本很小(对于一个组合,在“switch”语句中的每个“case”:),那么您的答案是好的,但我有1972个组合。所以这种策略毫无意义。是吗?谢谢,伙计,你的答案很好,但我需要一些其他的解决方案。@Wander,那么你应该用真正的期望编辑你的问题。我会的,我只是想让成员不必了解不必要的信息,但事实证明信息并不可靠。是的s work.eval()返回NULL,除非在求值代码中调用return,在这种情况下,返回传递给return的值。谢谢,它实际上可以工作。我想eval()不会坏,除非它可供用户使用(外部输入),这里不是这种情况。对吗?再次感谢。
$operations = array(
    '+' => function ($a, $b) { return $a + $b; }
);

foreach ($operations as $sign => $func) {
   echo '10'.$sign.'5 = '. $func(10, 5)."\n";
}
$num1 = 10;
$num2 = 20;

$operators = array("+", "-", "*", "/");
for ($x=0;$x<=count($operators)-1;$x++){
    echo eval('return '.$num1 . $operators[$x] .  $num2 . ';')."</br>";
}