mercredi 5 août 2009
PHP scan : array intersect
Dans la rubrique PHP / PEAR
Il y bien bien longtemps (8-9 ans), j'écrivais un tuto sur les tableaux en php(3)... que d'eau passées sous les ponts depuis, avec surtout la révolutionnaire arrivée des itérateurs.
Pourquoi je parle de ceci ?
Une question au boulot hier : j'ai une liste et un tableau. Je veux récuperer les valeurs du tableau en question pour lesquelles les clés sont dans la liste.
Et ce sans faire de boucle en php.
Première réponse qui me vient à l'esprit : filterIterator ou array_ intersect_???
Ca c'était pour la petite histoire et pour un post ulterieur, mais là je vais d'abord passer en revue la famille des array_intersect_*
Fonction | PHP 4 | PHP 5 - - - - - - - - - - - - - | - - - - - | - - - - - array_intersect | >= 4.0.1 | oui array_intersect_assoc | >= 4.3.0 | oui array_intersect_key | non | >= 5.1.0 array_intersect_uassoc | | oui array_intersect_ukey | non | >= 5.1.0 array_uintersect_assoc | non | oui array_uintersect_uassoc | non | oui
Points communs
- retournent toutes un tableau
- les valeurs retournées sont toujours celle du premier tableau
- les clés retournées sont toujours celle du premier tableau
- le nombre de tableau supplémentaires est libre
- pour les _intersect_u le nom de la fonction call back est à la fin.
- pour les _uintersect_u le nom des 2 fonctions callback est à la fin.
- toutes disponibles à partir de 5.1.0 (et vous n'utilisez pas une antiquité donc vous les avez toutes

array_intersect
- array_intersect ( array $array1 , array $array2 [, array $ ... ] )
retourne un tableau contenant toutes les valeurs qui sont présentes dans tous les autres arguments array2 , ...
array_intersect_assoc
- array_intersect_assoc ( array $array1 , array $array2 [, array $ ... ] )
retourne un tableau contenant toutes les valeurs qui sont aussi présentes dans tous les autres arguments array2 , ... Notez que les clés sont utilisées durant la comparaison, contrairement à array_intersect().
array_intersect_key
- array_intersect_key ( array $array1 , array $array2 [, array $ ... ] )
array_intersect_key() retourne un tableau contenant toutes les valeurs du tableau array1 qui contiennent des clés présentes dans tous les arguments.
array_intersect_uassoc
- array_intersect_uassoc ( array $array1 , array $array2 [, array $ ... ] , callback $key_compare_func )
retourne un tableau contenant toutes les valeurs du tableau array1 qui sont présentes dans tous les arguments. Notez que les clés sont utilisées dans la comparaison par opposition à la fonction array_intersect().
La comparaison d'index est effectuée en utilisant la fonction de rappel fournie. Elle doit retourner un entier, plus petit que, égal à ou plus grand que zéro si le premier argument est considéré comme étant, respectivement, plus petit que, égal à ou plus grand le second.
array array_intersect_ukey
- array_intersect_ukey ( array $array1 , array $array2 [, array $ ... ] , callback $key_compare_func )
retourne un tableau contenant toutes les valeurs du tableau array1 qui contiennent des clés présentes dans tous les arguments array2 , ... Cette comparaison est effectuée en utilisant une fonction de rappel fournie par l'utilisateur. La fonction de rappel doit retourner un entier plus petit que, égal à ou plus grand que 0 si la première clé est considérée, respectivement, comme plus petite que, égale à ou plus grande que la seconde.


1
-





