Php tableau

Résolu/Fermé
thomas.r Messages postés 79 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 29 janvier 2009 - 11 août 2008 à 12:07
thomas.r Messages postés 79 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 29 janvier 2009 - 11 août 2008 à 13:27
Bonjour,

J'essaie actuellement à partir d'une fonction d'afficher des images en random que j'ai mis préalablement dans un tableau mais cela marche une fois sur cinq. En effet l'affichage marche aléatoirement et j'ai quelque fois une erreur d'offset c'est à dire que mon random tombe sur rien.

Je m'explique :

dans une page j'appelle une fonction appel_images($n) avec $n=nombre d'images
function appel_images($n){
$all_images=array();
$temp=array();
$all_images=call_all_images(); // cette fonction récupère toutes les images de la bdd
for ($i=0;$i<=$x-1;$i++){
$nbre_images=sizeof($all_images);
$index=rand(0,($nbre_images-1));
$temp[$i]=$all_images[$index];
unset ($all_images[$index]);
}

j'ai retourné ma fonction dans tous les sens et je ne comprends pas pourquoi une fois sur cinq j'ai une erreur d'offset sur la ligne
$temp[$i]=$all_images[$index];

Pouvez-vous m'aider ?

Merci
A voir également:

5 réponses

choubaka Messages postés 39399 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 3 août 2024 2 101
11 août 2008 à 12:11
salut

tu ne peux pas modifier ton code de manière à voir sur l'écran la valeur de $index ??

ça te permettrait de comprendre le pourquoi
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
11 août 2008 à 12:13
C'est quoi $x ?
Tu le défini pas !

Faudrai pas mettre plus $n ?

A+

Gaerebut
0
thomas.r Messages postés 79 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 29 janvier 2009 2
11 août 2008 à 12:23
non non c'est bien un $x dans mon code :D c'est parce qu'en essayer d'expliquer je pensais qu'un $n expliquerai mieux
function appel_images($x){
$all_images=array();
$temp=array();
$all_images=call_all_images(); // cette fonction récupère toutes les images de la bdd
for ($i=0;$i<=$x-1;$i++){
$nbre_images=sizeof($all_images);
$index=rand(0,($nbre_images-1));
$temp[$i]=$all_images[$index];
unset ($all_images[$index]);
}
}

quand je fais un echo $index , apparement ca marche pas quand le random renvoie le même chiffre du genre ca bug quand l'affichage de $index donne le même chiffre. Et je comprends pas pourquoi car je refait à chaque itération un sizeof du tableau il devrait donc décaler chaque élément du tableau car je supprime celui utilisé précédement ???
0
thomas.r Messages postés 79 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 29 janvier 2009 2
11 août 2008 à 12:47
Bonjour,

J'ai lu sur certain post de forum que le problème pourrait venir de ma boucle. apparement unset supprime l'élément et non l'index qui va ac et on conseille d'utiliser un foreach mais je c pas comment puisque j'ai besoin de mon $x

Qu'en pensez vous ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thomas.r Messages postés 79 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 29 janvier 2009 2
11 août 2008 à 13:27
bonjour,

C bon j'ai réussi à trouver une solution à mon problème en utilisant array_splice($tableau,$index,1)

merci pour votre participation
0