PHP : Comportement incompréhensible de array_intersect

PHP : Comportement incompréhensible de array_intersect - PHP - Programmation

Marsh Posté le 11-03-2005 à 11:57:29    

tableau 1 : {11,12,13,14,15,16,17}
tableau 2 : {12,13,15}
 
et si je fait un array_intersect sur ces deux tableaux, j'obtiens { ,12,13}
 
donc les valeurs sont décalées vers la droite (enfin a priori... car une valeur vide est ajoutée au début, et une valeur est perdue a la fin).
 
Question : pourquoi ca fait ca ????
 
au moyen de multiples lignes de débug je vérifie les indices et les valeurs et je suis certain qu'elles sont bien comme dans mes tableau 1 et 2 ci dessus.
 
je bloque...

Reply

Marsh Posté le 11-03-2005 à 11:57:29   

Reply

Marsh Posté le 11-03-2005 à 11:59:34    

si tu fais un print_r de tes 3 tableaux il sort quoi exactement?:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 11-03-2005 à 12:02:16    

Salut
 
Je viens de tester ça, ça marche :

Code :
  1. <?php
  2. $arr1 = array(11,12,13,14,15,16,17);
  3. $arr2 = array(12,13,15);
  4. print_r(array_intersect($arr1, $arr2));
  5. ?>

Reply

Marsh Posté le 11-03-2005 à 12:03:16    

Code :
  1. tab1
  2. Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 [4] => 15 [5] => 16 [6] => 17 )
  3. tab2
  4. Array ( [0] => 12 [1] => 13 [2] => 15 )
  5. tab3
  6. Array ( [1] => 12 [2] => 13 [4] => 15 )


 
C bien un décalage...
ptain pourquoi il commence pas les indices a zero ? car c vraiment lourd là pr traiter le tableau

Reply

Marsh Posté le 11-03-2005 à 12:04:12    

ratibus a écrit :

Salut
 
Je viens de tester ça, ça marche :

Code :
  1. <?php
  2. $arr1 = array(11,12,13,14,15,16,17);
  3. $arr2 = array(12,13,15);
  4. print_r(array_intersect($arr1, $arr2));
  5. ?>



testé chez moi, c décalé aussi

Reply

Marsh Posté le 11-03-2005 à 12:06:02    

en fait contrairement a ce que je croyais au premier post le 15 est bien la mais il n'apparaissait pas avec mes tests car j'affichai en commencant a l'indice zero et en parcourant le nb d'éléments du tablaeu (fonction count).
 
Mais ce pb d'indices m'embête, pourquoi ca ne commence pas à 0 ?? ca pose vraiment pb pr la suite d emon programme.

Reply

Marsh Posté le 11-03-2005 à 12:09:07    


utilise foreach() pour le parcourir...[:skeye]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 11-03-2005 à 12:10:02    

D'ailleurs c'est marqué dans la doc hein!:o
http://www.nexen.net/docs/php/anno [...] ersect.php

Citation :


array_intersect  retourne un tableau contenant toutes les valeurs de array1  qui sont présentes dans tous les autres arguments array2  , ...  , etc. Notez que les clés sont préservées.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 11-03-2005 à 12:39:44    

ouais :/ si y a pas moyen d'éviter ca je ferai comme ca

Reply

Marsh Posté le 11-03-2005 à 12:46:29    

C'est les clés du premier tableau qui sont préservées.
Si ce sont les clés du second tableau qui t'intéresse, inverse l'ordre des tableau dans l'appel à array_intersect ;)

Reply

Marsh Posté le 11-03-2005 à 12:46:29   

Reply

Marsh Posté le 11-03-2005 à 13:20:14    

yeah bonne idée ca :) merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed