130 votes

COALESCE function pour PHP ?

Plusieurs langages de programmation ont une fonction coalesce (retourne la première valeur non nulle, exemple). PHP, malheureusement, ne le fait pas.

Ce qui serait une bonne façon de mettre en œuvre une en PHP ?

193voto

Kevin Points 6567

Il y a un nouvel opérateur en php 5.3, qui le fait : ``

Source : http://www.php.net/ChangeLog-5.php#5.3.0

29voto

Will Shaver Points 2562

Tout d’abord frappé pour « php coalesce » sur google.

http://drupial.com/content/php-COALESCE

18voto

Ethan Kent Points 101

J’aime beaucoup la ? : opérateur. Malheureusement, ce n'est pas encore implémenté sur mon environnement de production. Si j’utilise l’équivalent de ceci :

9voto

Andrew Points 58

Il est intéressant de noter que, en raison de PHP de traitement de uninitalised variables et indices de tableau, tout type de fusionner en fonction de l'utilisation limitée. J'aimerais être capable de faire cela:

$id = coalesce($_GET['id'], $_SESSION['id'], null);

Mais ce sera, dans la plupart des cas, la cause de PHP à l'erreur avec un E_NOTICE. La seule façon de tester l'existence d'une variable avant de l'utiliser est de l'utiliser directement dans le vide() ou la fonction isset(). L'opérateur ternaire proposé par Kevin est la meilleure option si vous savez que toutes les options de votre fusionnent sont connus pour être initialisés.

6voto

Peter Bailey Points 62125

Assurez-vous que vous identifiez exactement comment vous voulez cette fonction fonctionne avec certains types. PHP dispose d’une grande variété de fonctions de vérification de type ou semblables, alors assurez-vous que vous savez comment ils fonctionnent. Il s’agit d’un exemple de comparaison de is_null() et empty()

Comme vous pouvez le voir, empty() retourne true pour tous ces, mais is_null() ne le fait que pour 2 d'entre eux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X