[PHP] Amélioration en rapidité d'un p'tit bout de code

Amélioration en rapidité d'un p'tit bout de code [PHP] - PHP - Programmation

Marsh Posté le 15-06-2003 à 18:20:32    

Voici le bout de code que j'aimerais augmenter en rapidité d'exécution :

Code :
  1. $caddie = array( array( idx => 14, id_genre => 3, qty => 1), array( idx => 12, id_genre => 3, qty => 1) );
  2. // Testons voir si l'élément existe ou non déjà dans le caddie
  3. $new_idx=142;
  4. $new_id_genre=3;
  5. echo "<p> Article oui ou non déjà dans le caddie<br>";
  6. echo "nouvel article à vérifier : idx = $new_idx ; id_genre = $new_id_genre<br>";
  7. $nb=count($caddie);
  8. for($i=0 ; $i<$nb ; $i++)
  9. if( $caddie[$i]["idx"]==$new_idx && $caddie[$i]["id_genre"]==$new_id_genre )
  10.    {  $deja_com=1;
  11.        $i=$nb;
  12.     }
  13. }
  14. if($deja_com)
  15. {  echo "/!\ article déjà commandé";  }
  16. else {  echo "article jamais commandé";  }


 
Car pour de gros caddie (qui est le cas du site car il est facile d'avoir des centaines d'articles) tester chaque éléments avec tous sont déjà présent dans le caddie prends beaucoup de temps.
Y'aurait-il un moyen plus rapide de tester si les valeurs idx ET id_genre (les 2 en même temps) ont déjà oui ou non été mise dans le tableau.

Reply

Marsh Posté le 15-06-2003 à 18:20:32   

Reply

Marsh Posté le 17-06-2003 à 23:20:56    

peut etre avec cette fonction :
http://fr.php.net/manual/fr/function.in-array.php
 
enfin çà doit revenir au meme mais ça fera plus propre :)

Reply

Marsh Posté le 18-06-2003 à 00:53:49    

1- le bout de code ne peut pas marcher, $nb n'est pas initialisé  :D  
2- Sérieusement, change la structure de ton tableau :
Au lieu de

$caddie = array( array( idx => 14, id_genre => 3, qty => 1), array( idx => 12, id_genre => 3, qty => 1) );


Fait un truc du genre :

$caddie[3][14] = 1;
$caddie[3][12] = 1;

 
 
Comme çà t'as un accès direct en fonction de idx et de id_genre.
 
C'est beau le tableau associatif, mais à condition que ce soir vraiement util !
 
D'autre part, on n'écrit pas

array( idx => 12, id_genre => 3, qty => 1)


mais

array( 'idx' => 12, 'id_genre' => 3, 'qty' => 1)


Les indices sont des chaînes de caractères. Quand tu met idx au lieu de 'idx', PHP cherche une constante idx et comme il la trouve pas, il le crée et lui donne la valeur 'idx' ! C'est pas propre ! Surtout si un jour t'a par exemple un truc comme :

define("idx", "qty" );


Là ton code se met à bugger de partout et tu comprends pas pourquoi.
Bon tu peux penser qui çà n'arrivera pas, mais t'es pas le seul à définir des constantes...
http://www.php.net/manual/fr/language.types.array.php au paragraphe "Attention aux tableaux".


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 18-06-2003 à 01:09:21    

Y'a un bug HTML dans la doc http://www.php.net/manual/fr/language.types.array.php
Dans le paragraphe 7-15. Exemples de conflits de constantes indéfinies
 
Y'a plein de &eacute; qui trainent...
 
La version original est plus lisible
http://www.php.net/manual/en/language.types.array.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

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