Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne en opérateur correspondant en php

Comment convertir une chaîne en opérateur correspondant en php

PHPz
PHPzoriginal
2023-04-04 14:01:18822parcourir

Dans le développement PHP, nous devons souvent générer dynamiquement certains opérateurs basés sur la chaîne saisie par l'utilisateur. Par exemple, lorsque l'ordinateur analyse automatiquement la saisie de l'utilisateur dans une instruction de requête SQL, l'utilisateur peut utiliser le signe supérieur à, inférieur à. signe et égal à dans la condition de requête No. et d'autres opérateurs. À ce stade, nous devons convertir ces chaînes en opérateurs correspondants.

Alors, comment mettre en œuvre cette fonction ? En fait, PHP nous propose une méthode simple : utiliser des variables variables et le tableau $_GET pour implémenter l'opérateur de conversion de chaîne.

Tout d'abord, nous devons savoir qu'il existe un type de variable en PHP appelé Variables variables, qui est le nom d'une variable. La syntaxe est ${$varname}, où $varname est un nom de variable ordinaire. Par exemple, l'exemple suivant :

$name = 'Tom'; // 定义一个普通的变量$name
$$name = 'Hello'; // 定义一个可变变量$Tom,其变量名为$name的值,即'Tom'
echo $Tom; // 输出'Hello'

Ensuite, nous pouvons combiner le tableau $_GET pour implémenter l'opérateur de conversion de chaîne. Le tableau $_GET est un tableau utilisé en PHP pour recevoir les paramètres soumis via GET. Par exemple, lorsque nous saisissons : http://www.example.com/test.php?a=b dans la barre d'adresse, la valeur de $_GET['a'] est b.

Voici un exemple de conversion de caractères en opérateurs :

$operator = $_GET['op']; // 获取用户输入的运算符
$a = 1;
$b = 2;
$result = null;
switch ($operator) {
    case '+':
        $result = $a + $b;
        break;
    case '-':
        $result = $a - $b;
        break;
    case '*':
        $result = $a * $b;
        break;
    case '/':
        $result = $a / $b;
        break;
    default:
        // 不支持的运算符
        break;
}
echo $result; // 输出运算结果

Dans le code ci-dessus, nous définissons d'abord la variable $operator pour stocker l'opérateur saisi par l'utilisateur. Ensuite, nous définissons deux variables $a et $b. Dans l'instruction switch, nous utilisons différents opérateurs pour calculer les résultats de $a et $b en fonction de l'opérateur saisi par l'utilisateur et stockons les résultats dans la variable $result. Enfin, nous publions le résultat de l'opération.

Cependant, lorsque l'utilisateur saisit les chaînes '+', '-', '*', '/', le code ci-dessus fonctionnera normalement. Mais si l'utilisateur saisit un tout nouvel opérateur, le programme générera une erreur. Par conséquent, nous avons besoin d’une manière plus générale d’implémenter l’opérateur de conversion de chaîne.

Nous pouvons utiliser l'opérateur comme nom de variable de la variable variable et utiliser $$ suivi du nom de l'opérateur pour implémenter l'opérateur de conversion de chaîne. Dans cette implémentation, $ $op est utilisé comme variable variable, qui a quatre valeurs : '$+$', '$-$', '$*$', '$/$', selon ces variables. Pour le nom de la variable, nous pouvons implémenter l'opérateur de conversion de chaîne.

Ce qui suit est un exemple d'utilisation de variables variables pour convertir des chaînes en opérateurs :

$op = $_GET['op'];
$a = 1;
$b = 2;
$result = null;

$$op = function($a, $b) {
    return eval("return($a $op $b);"); // 将$op替换为运算符,使用eval执行运算
};

if (isset($$op)) {
    $function = $$op; // 获得对应的函数
    $result = $function($a, $b); // 计算结果
}

echo $result; // 输出运算结果

Dans le code ci-dessus, nous définissons d'abord la variable $op pour stocker l'opérateur saisi par l'utilisateur. Ensuite, nous définissons deux variables $a et $b. À la ligne 7, nous définissons dynamiquement une fonction anonyme basée sur l'opérateur et la stockons dans la variable mutable $$op. Dans l'instruction if, si la variable variable $$op existe, nous utilisons la variable variable $function pour appeler la fonction correspondante pour calculer le résultat et stockons le résultat dans la variable $result. Enfin, nous publions le résultat de l'opération.

Il convient de noter que cette méthode d'implémentation peut présenter certains problèmes de sécurité lors de l'utilisation de la fonction eval, il n'est donc pas recommandé de l'utiliser dans des projets formels. Dans le développement réel, nous pouvons choisir d'utiliser des opérateurs prédéfinis ou d'utiliser des opérateurs personnalisés pour traiter les opérateurs de conversion de chaînes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn