Validation de type entier d'une variable PHP

Publié le 19/01/2024 • Actualisé le 19/01/2024


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment faire une validation de type entier d'une variable avec PHP. Dans snippet précédent, on a vu une astuce (assez moche) pour convertir une variable en entier. Ici on fait la validation en utilisant la fonction à usage multiples filter_var(). Si la variable n'est pas un entier, alors il est retourné false. Le cas spécifique pour true est quelque chose à savoir puisque ça retourne true même si c'est un booléen. Comme on peut le voir sans la sortie du snippet,true est transformé en 1. C'est assez étrange puisque ce n'est pas le case pour false


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet287Trait
{
    public function snippet287(): void
    {
        $tests = [
            true,
            false,
            '0.0',
            'foo',
            ['my' => 'array'],
            555,
            0,
            1,
            -1,
        ];

        foreach ($tests as $test) {
            $filteredVar = filter_var($test, FILTER_VALIDATE_INT);
            if ($filteredVar !== false) {
                echo sprintf('%s is an integer, final var: %s'.PHP_EOL, var_export($test, true), var_export($filteredVar, true));
            } else {
                echo sprintf('%s is NOT an integer'.PHP_EOL, var_export($test));
            }
        }

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire

  Travaillez avec moi !