Problème avec array_rand - PHP - Programmation
Marsh Posté le 05-04-2007 à 15:44:47
Déjà, je comprends pas ce que t'essaies de faire. En gros là tu lui demandes de te sélectionner aléatoirement 100 nombres parmi 101.
Ensuite, effectivement, tu vas pas te taper tout le tableau a la main, t'as http://fr.php.net/range pour ça... mais ça oblige à construire un tableau assez énorme. L'autre solution c'est d'utiliser mt_rand autant de fois que nécessaire en stockant les valeurs déjà trouvées pour éviter de retomber sur la même.
Marsh Posté le 05-04-2007 à 15:52:57
sielfried a écrit : Ensuite, effectivement, tu vas pas te taper tout le tableau a la main, t'as http://fr.php.net/range pour ça... mais ça oblige à construire un tableau assez énorme. L'autre solution c'est d'utiliser mt_rand autant de fois que nécessaire en stockant les valeurs déjà trouvées pour éviter de retomber sur la même. |
Je conseillerais quand même de passer par range plutôt que des mt_rand à répétition:
Donc imo passer par range + array_rand dans un premier temps, ensuite si les perfs sont insuffisante ou la consommation de mémoire est trop grande vérifier si le problème vient de là et réimplémenter le truc via mt_rand si c'est le cas (et que mt_rand améliore les perfs)
Marsh Posté le 05-04-2007 à 16:00:33
ReplyMarsh Posté le 05-04-2007 à 17:08:53
Merci pour vos réponses mais je n'y trouve pourtant pas la solution que j'espérais, j'ai du mal m'exprimer.
Comme je peux déclarer un tableau avec une dimension variable car je peux avoir besoin d'un tableau avec 10 valeurs auquel cas je peux les écrire dans le code, mais je peux aussi avoir besoin avec le même tableau de 5 000 valeurs et je ne pourrai certainement pas les écrire toutes.
Quel est la syntaxe la mieux adaptée à mon souci de tableau de grande dimentions.
Est ce que je ne pourrais pas mettre une variable a la place example !
Code :
|
Ou encore mettre un écart de valeurs exemple !
Code :
|
Marsh Posté le 05-04-2007 à 18:21:37
J'ai bien lu la réponse de sielfried.
J'ai essayé différantes choses, dont une qui me donne une chaine de chiffre 012345678910. Et lorsque je donne cette dernière à la fonction aléatoire j'ai de nouveau une erreure.
Il est vrais que certaines choses expliquée dans cette page d'aide sont pour moi obscures, c'est pour cette raison que j'ai ajouté une nouvelle réponse.
En fait j'ai une fonction qui me calcule le nombdre de photos que j'ai dans un dossier et qui me retourne donc une valeur et je souhaiterais utiliser cette même valeur dans ma fonction aléatoire afin d'automatiser complètement mon script.
Marsh Posté le 05-04-2007 à 18:33:46
Citation : |
Si t'avais lu un minimum le lien que j'ai donné sur range, tu te demanderais pas comment faire ça...
Marsh Posté le 05-04-2007 à 18:54:15
J'ai lu la page et j'ai réussi à faire des écarts de 0-5000 sans soucis Je te remercie.
Mais comme je le disais dans mon dernier poste je n'arrive pas à donner cette chaine générées.
Code :
|
j'ai bien mon écart mais là j'ai une erreur a la ligne 4 car array_rand ne supporte visiblement pas une chaine 012345678901112131415161718......49995000.
Après comme je le disais aussi dans mon poste précédant je n'ai pas compris tt les exemples, c'est pour cette raison que je vous redemande de l'aide.
Merci par avance
Marsh Posté le 05-04-2007 à 18:58:43
gabgab a écrit :
|
C'est n'importe quoi, là tu donnes à "$number" les valeurs 0, puis 1, puis 2, ... 5000
Donc quand tu sors de ton foreach $number est un entier contenant le nombre 5000, pas un array
C'est quand même pas compliqué de réfléchir 3 secondes si?
Marsh Posté le 05-04-2007 à 19:46:35
J'ai bien vu que je donnais les valeurs 0, puis 1, puis 2 jusqu'a 5000. (c'est ce que je dis plus haut 012345678901112131415161718......49995000)
Mais je n'arrive pas à faire autrement.
Je te demande de bien vouloir m'aide s'il te plais, car j'ai l'impressions que tu sais le faire et moi non je n'y arrive pas.
Merci par avance.
Marsh Posté le 05-04-2007 à 19:56:36
Heuuu c'est pas très compliqué hein
range() renvoie un array, tu colles ton array dans une variable au lieu d'itérer dessus (j'veux dire quand tu vois des docs sur PHP.net t'es censé les comprendre pas les recopier telles quelles et te plaindre que ça fonctionne pas )
Et ensuite tu files ton array à array_rand
Marsh Posté le 05-04-2007 à 15:21:13
Bonjour,
J'aimerai avoir votre aide, s'il vous plais.
Je souhaite crée une galerie photo, avec des images aléatoires mais qui soit affiché une seule fois.
J'ai donc écris ça :
Ça marche super bien ..... Mais Ça marche que pour 100 photos dans la galerie.
Si j'ai 400 photos je ne vais pas écrier 1 2 3 4 .... jusqu'a 400.
J'ai aussi cherché et j'ai toujours trouvé une variable dans la quel il faut définir tt les nombre du tableaux à la main.
Je souhaite donc remplacé ces nombres par une variable..... mais je n'y arrive pas, j'ai essayer tt plein de truc, et j'obtiens souvent cela
Parse error: parse error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in http://www.mon_domaine.com/dev/index.php on line 4
Je ne sais pas s'il existe une autre méthode.
Je vous remercie par avance de votre aide.