Problème avec un explode

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème avec un explode

par Ryle » 17 mars 2009, 16:34

C'est la même chose ;)
int array_push ( array &$array , mixed $var [, mixed $... ] )

array_push() considère array comme une pile, et empile les variables var , ... à la fin de array . La longueur du tableau array augmente d'autant.
Cela a le même effet que :
<?php
$array[] = $var;
?> 
répété pour chaque var .

par Alexandre_Sceptique » 17 mars 2009, 15:41

Bonjour,

Merci à vous deux... J'avais trouvé une solution de mon côté en utilisant un array_push. Je délcare un array() avant le premier explode et je remplis le tableau à la fin de la boucle avec array_push.

Néanmoins, je vais tester la proposition d'Auresms.

Encore merci !

Alexandre

par Aureusms » 17 mars 2009, 11:17

Ajuste $gallery en tableau :
$gallery = '<li><img src="'.$url.'" alt="'.$title.'" title="'.$title.'" /></a></li>'; 
en
$gallery = array();
foreach($images as $image) {
list($url, $title) = explode(",", $image);
// Là, je mets l'explode sur la virgule pour séparer l'Url de l'adresse
$gallery[] = '<li><img src="'.$url.'" alt="'.$title.'" title="'.$title.'" /></a></li>';
} 

par Ryle » 16 mars 2009, 22:48

Ta variable $gallery est une chaine de caractère que tu écrases à chaque itération de ton foreach. Résultat, au final elle ne contiendra que la dernière image, mais surtout, ça reste une chaine et pas un tableau.

Tu ne peux donc pas faire appel à un $gallery[xxx] ...

Il te faut donc modifier ton code pour en faire un tableau, et pouvoir l'exploiter avec ton rand :)

Problème avec un explode

par Alexandre_Sceptique » 16 mars 2009, 21:53

Bonsoir,

Je souhaiterai décomposer une chaîne de caractères avec deux séparateurs : *** puis ,.

Exemple de chaîne : http://www.monsite.com/gallery/paris.jp ... n.jpg,Lyon

En gros, il s'agit de tirer au sort une image dans une liste et de provoquer son affichage dans une page en partant de son Url et de son titre. Je pense que c'est plutôt simple comme exercice.

Seulement, je me heurte au problème de l'explode qui ne fonctionne pas.

Voici mon code :
$number = 2;
//Ici, je spécifie le nombre d'images attendues avant leur tirage au sort
$string = 'http://www.monsite.com/gallery/paris.jpg,Paris***http://www.monsite.com/gallery/lyon.jpg,Lyon,***http://www.monsite.com/gallery/marseille.jpg,marseille***http://www.monsite.com/gallery/lille.jpg,Lille';
// Ici, je veux scinder les deux chaînes en utilisant le séparateur *** puis scinder la sous chaîne en utilisant le séparateur ,
$images = explode("***", $string);
// A priori, ici les chaînes sont séparées
foreach($images as $image) {
list($url, $title) = explode(",", $image);
// Là, je mets l'explode sur la virgule pour séparer l'Url de l'adresse
$gallery = '<li><img src="'.$url.'" alt="'.$title.'" title="'.$title.'" /></a></li>';
}
// Je place cette image dans une liste, plus élégante en Html !!!
echo $gallery[rand (0, $number)];;
Hélas, ça me renvoue une chaîne vide !!!

Auriez-vous une idée ?

Je planche depuis des heures sur ce problème, sans trouver de solution...

Merci pour votre aide.

Alexandre