Boucle foreach capricieuse
Smoking bird
Messages postés
911
Statut
Membre
-
Smoking bird Messages postés 911 Statut Membre -
Smoking bird Messages postés 911 Statut Membre -
Bonjour,
J'ai un problème avec ce code ci:
ref et image sont récupérées correctement.
Il y a deux tests avec expressions régulières dans le foreach, le premier se passe sans problème, mais c'est comme si à partir du second, le tableau $Image ne passait plus et n'existait tout simplement plus lors du test même.
Quelqu'un aurait -il une idée?
Merci
Smoke
J'ai un problème avec ce code ci:
$ref=$_GET['ref'];
$image=$_GET['image'];
$sql="select ref,annexes from contenuofficiel where ref='".$ref."'";
$query=mysql_query($sql) or die(mysql_error());
while( $del=mysql_fetch_array($query) ) {
$exploAnn=explode('||',$del['annexes']);
foreach($exploAnn as $Image) {
if( preg_match('/.jpg|.png|.gif|.jpeg/i',$Image) ){
echo "fichier image<br />";
if( preg_match("/$image/",$Image)) {
echo 'cible';
}
}
}
}
ref et image sont récupérées correctement.
Il y a deux tests avec expressions régulières dans le foreach, le premier se passe sans problème, mais c'est comme si à partir du second, le tableau $Image ne passait plus et n'existait tout simplement plus lors du test même.
Quelqu'un aurait -il une idée?
Merci
Smoke
A voir également:
- Boucle foreach capricieuse
- Vlc lecture en boucle ✓ - Forum Lecteurs et supports vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Huawei s'allume et s'éteint en boucle - Forum Huawei
- Redémarrage en boucle Xiamo mi note 10 - Forum Xiaomi
4 réponses
bonjour,
imbriquer une boucle for each dans une boucle while est impossible, il faut utiliser l'une des 3 méthodes suivantes :
Il existe 3 façons de parcourir un tableau associatif. La plus courante et la plus évidente c'est :
//solution 1
foreach ($maTable as $maCle => $maValeur) {
//mon code
}
mais on peut également faire :
//solution 2
while (list($maCle,$maValeur) = each($maTable)) {
//mon code
}
//et solution 3
while ($monProchainElement = next($maTable)) {
//mon code
}
imbriquer une boucle for each dans une boucle while est impossible, il faut utiliser l'une des 3 méthodes suivantes :
Il existe 3 façons de parcourir un tableau associatif. La plus courante et la plus évidente c'est :
//solution 1
foreach ($maTable as $maCle => $maValeur) {
//mon code
}
mais on peut également faire :
//solution 2
while (list($maCle,$maValeur) = each($maTable)) {
//mon code
}
//et solution 3
while ($monProchainElement = next($maTable)) {
//mon code
}
Bonjour
Bien sûr que si on peut imbriquer une boucle foreach à l'intérieur d'un boucle while.
Un foreach ne permet pas de balayer les résultats d'une requête (ils sont fournis sous forme d'une ressource, pas d'un tableau).
Peux-tu préciser si $Image semble vide lors du deuxième passage dans le foreach ou s'il disparaît entre le preg_match('/.jpg|.png|.gif|.jpeg/i',$Image) et le preg_match("/$image/",$Image) ?
Bien sûr que si on peut imbriquer une boucle foreach à l'intérieur d'un boucle while.
Un foreach ne permet pas de balayer les résultats d'une requête (ils sont fournis sous forme d'une ressource, pas d'un tableau).
Peux-tu préciser si $Image semble vide lors du deuxième passage dans le foreach ou s'il disparaît entre le preg_match('/.jpg|.png|.gif|.jpeg/i',$Image) et le preg_match("/$image/",$Image) ?
Je t'avous ne pas la comprendre, cependant. D'abord parce que ma boucle foreach fonctionne (relativement) dans le while, et ensuite parce que je n'ai aucune idée de comment mettre en pratique les codes que tu proposes, pour le projet qui est le mien.
Est il possible d'utiliser une boucle foreach pour balayer des résultats mysql?