Tester si un tableau est une liste avec PHP
Publié le 10/09/2022 • Actualisé le 10/09/2022
Dans ce bout de code, nous voyons comment tester si un tableau est une liste avec PHP. Cette fonction a été introduite dans PHP 8.1, avant, on devait manuellement le faire. Jetez un coup d'œil à la question StackOverflow pour plus de détails. Vous pouvez désormais trouver des snippets relatifs aux nouvelles fonctionnalités PHP 8.1 avec le tag PHP 8.1 tag. Veuillez noter que PHPStan analyse déjà les appels array_is_list()
et lève un avertissement si ces appels sont inutiles, comme dans les tests unitaires suivants.
<?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 Snippet218Trait
{
public function snippet218(): void
{
$myList = [1, 2, 4, 8];
var_dump($myList);
var_dump(array_is_list($myList)); // @phpstan-ignore-line
$myList['foo'] = 'bar'; // extra non numeric keys, the array is not a list anymore
var_dump($myList);
var_dump(array_is_list($myList)); // @phpstan-ignore-line
// That's it! 😁
}
}
Exécuter le snippet ≪ this.showUnitTest ? this.trans.hide_unit_test : this.trans.show_unit_test ≫ Plus sur Stackoverflow Lire la doc Snippet aléatoire
<?php
declare(strict_types=1);
namespace App\Tests\Integration\Controller\Snippets;
use PHPUnit\Framework\TestCase;
/**
* @see Snippet218Trait
*/
final class Snippet218Test extends TestCase
{
/**
* @see Snippet218Trait::snippet218
*/
public function testSnippet218(): void
{
$myList = [1, 2, 4, 8];
self::assertTrue(array_is_list($myList)); // @phpstan-ignore-line Yes PHPStan but we want to test by ourselves.
$myList['foo'] = 'bar';
self::assertFalse(array_is_list($myList)); // @phpstan-ignore-line Same here
}
}
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉