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.
exemples

Lire la suite...