$variable contenant une opération

Mammouth du PHP | 1339 Messages

24 juin 2014, 02:37

Hello,

J'aimerai faire marcher ca :
function calcul($operation) {

 return eval('4'.$operation);

}

echo calcul('+2'); // 6
Une idée ?
Bon sinon tu me fais un message privé et on se fait un TeamViewer

ViPHP
xTG
ViPHP | 7331 Messages

24 juin 2014, 08:14

Pas fan des eval car c'est souvent pour faire de belles brèches mais ce serait plutôt ainsi :
function calcul($operation) {
 $retour = 0;
 eval('$retour = 4'.$operation);
 return $retour;
}

echo calcul('+2'); // 6
Sinon pour faire mieux il faut décomposer une chaîne de caractères qui contient ton opération et appliquer chaque opérateur unitairement.

Mammouth du PHP | 1339 Messages

24 juin 2014, 11:34

Euh genre avec un str_split ?
Si on peut se passer de ereg, je prend !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 1339 Messages

24 juin 2014, 15:55

J'avais vu un truc similaire dans les exemples de php.net mais en local ca marche pas ...

Code : Tout sélectionner

Parse error: syntax error, unexpected end of file in C:\wamp\www\test.php(5) : eval()'d code on line 1
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 juin 2014, 16:06

ben y a une erreur de syntaxe, c'est quoi ce que tu test exactement ?
manquerais pas une ' des fois ?

sinon le parse avec explode c'est réalisable.

le plus simple étant 3 paramètres, deux pour les opérandes et un pour l'opérateur ;)

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 1339 Messages

24 juin 2014, 16:15

J'ai juste copié le code de xTG
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 1339 Messages

24 juin 2014, 18:07

J'ai réfléchi et simplifié ...
function calcul($operation) {
	return 4+$operation;
}

echo calcul(2); // 6
echo calcul(-1); // 3
Bon sinon tu me fais un message privé et on se fait un TeamViewer

ViPHP
xTG
ViPHP | 7331 Messages

24 juin 2014, 20:14

Dans mon exemple je me demande s'il ne manquerait pas un point virgule dans la formule d'eval. ;)