Maison  >  Questions et réponses  >  le corps du texte

Comment construire une expression avec plusieurs variables avec le même modèle de nom ?

J'ai 50 variables dans mon script système. Tous ont le même schéma de dénomination, par exemple :

$case_un
$case_deux
$case_trois
...
$case_fourthy

J'ai besoin de construire une expression avec toutes ces variables sans avoir à coder 50 noms de variables !

Étant donné que tous mes noms de variables commencent par le modèle « case_ », existe-t-il une syntaxe pour les additionner ou une autre expression ?

Je dois exécuter quelque chose comme ceci :

$test_of_cases = $case_un && $case_deux && $case_trois && ...........$case_fourthy ;

Et ce truc :

$total_of_sums = $sum_un + $sum_deux + ............$sum_fifthy ;

Alors, existe-t-il un moyen de coder en PHP ? En langage formel, j'ai juste besoin de additionner toutes les variables dont les noms commencent par « case_ ».

Mes 50 variables ne peuvent pas être stockées dans un tableau car elles proviennent de sources et de résultats d'expression différents.

Je ne suis pas sûr, mais je pense qu'il existe une expression pour faire cela dans d'autres langues :

LET a=SUM (`*case_*`)
    LET b=XOR (`*case_*`)
    LET c=AND (`*case_*`)

J'ai appris cela pendant mes études il y a 30 ans...

J'aimerais que PHP puisse faire ça aussi, sinon non, je devrais écrire 50 lignes de code !

Sincères salutations

P粉310931198P粉310931198422 Il y a quelques jours803

répondre à tous(1)je répondrai

  • P粉956441054

    P粉9564410542023-09-17 00:10:34

    Supposons que vous ayez un tableau comme celui-ci

    $arr = [
        'people_physic_eyes' => 1,
        'people_physic_weight' => 2,
        ...
        'name' => 'james',
        'age' => 15,
        ...
    ];

    Vous souhaitez additionner toutes les valeurs dont le nom de clé commence par "people_physical_", il existe de nombreuses façons d'y parvenir, en voici une en utilisant array_reduce :

    $sum = array_reduce(
        array_keys($arr),
        function ($sum, $key) use ($arr) {
            # if the key starts with 'people_physic_', sum up the value
            return strpos($key, 'people_physic_') === 0 ? $sum + $arr[$key] : $sum;
        },
        0
    );

    Mais ce n'est pas efficace car vous devez comparer toutes les clés à chaque appel.

    répondre
    0
  • Annulerrépondre