To achieve just that, you can use create_function
$operator = '+'; $func = create_function('$a,$b', "return \$a $operator \$b;"); foreach($resultSet as $item){ $result = $func($item, 1); echo $result; }
It is possible to use a cleaner solution with lambdas (php5.3 required)
$func = function($a, $b) { return $a + $b; }; foreach($resultSet as $item){ $result = $func($item, 1); echo $result; }
See also array_sum, array_reduce
Advanced example with array_reduce and lambdas
$ary = array( array('foo' => 1, 'bar' => 91), array('foo' => 2, 'bar' => 92), array('foo' => 3, 'bar' => 93), array('foo' => 4, 'bar' => 94), array('foo' => 5, 'bar' => 95), ); $sumOfFoos = array_reduce($ary, function($val, $item) { return $val + $item['foo']; } ); $sumOfBars = array_reduce($ary, function($val, $item) { return $val + $item['bar']; } );
The main thing is that instead of "variable operators" (which is impossible in php), you should rather use variable functions (which is possible and much more flexible).
source share