Pour réaliser exactement cela, vous pouvez utiliser create_function
$operator = '+';
$func = create_function('$a,$b', "return \$a $operator \$b;");
foreach($resultSet as $item){
$result = $func($item, 1);
echo $result;
}
Une solution plus propre est possible avec lambdas (PHP5.3 requis)
$func = function($a, $b) { return $a + $b; };
foreach($resultSet as $item){
$result = $func($item, 1);
echo $result;
}
Voir aussi array_sum, array_reduce
Exemple avancé avec array_reduce et 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']; }
);
Le point principal est que, au lieu des « opérateurs variables » (ce qui est impossible en PHP), vous devriez plutôt utiliser des fonctions variables (ce qui est possible et beaucoup plus flexible) .
Quel est le cas réel qui vous a amené à cette question? –
Je devais échanger des éléments dans un tableau mais conserver leurs clés et leurs valeurs. $ item [$ this-> orderField] serait l'item courant, +/- 1 serait l'item avec lequel il échangerait ses positions. J'ai écrit une fonction array_swap, et combinée avec la méthode de reko_t elle produit quelque chose de similaire à array ([1] => '1', [0] => '0', [2] => '2') de array ([ 0] => '0', [1] => '1', [2] => '2'). – BenTheDesigner