web-dev-qa-db-fra.com

Plusieurs variables d'index dans PHP foreach loop

Est-il possible d'avoir une boucle foreach dans PHP avec plusieurs variables "index", semblable à la suivante (qui n'utilise pas la syntaxe correcte)?

foreach ($courses as $course, $sections as $section)

Sinon, existe-t-il un bon moyen d'obtenir le même résultat?

31
Donald Taylor

pour atteindre exactement ce résultat que vous pourriez faire

foreach (array_combine($courses, $sections) as $course => $section)

mais cela ne fonctionne que pour deux tableaux

49
Will

Si les deux tableaux sont de la même taille, vous pouvez utiliser une boucle for comme:

for($i=0, $count = count($courses);$i<$count;$i++) {
 $course  = $courses[$i];
 $section = $sections[$i];
}
15
codaddict

Vous devez utiliser des boucles imbriquées comme ceci:

foreach($courses as $course)
{
    foreach($sections as $section)
    {
    }
}

Bien sûr, cela se déroulera sur chaque section pour chaque cours.

Si vous voulez regarder chaque paire, il vaut mieux utiliser les objets qui contiennent les paires cours/section et les boucler, ou vous assurer que les index sont les mêmes et faire:

foreach($courses as $key => $course)
{
    $section = $sections[$key];
}
6
Alan Geleynse

ESSAYER -

1)

<?php
$FirstArray = array('a', 'b', 'c', 'd');
$SecondArray = array('1', '2', '3', '4');

foreach($FirstArray as $index => $value) {
    echo $FirstArray[$index].$SecondArray[$index];
    echo "<br/>";
}
?>

ou 2)

<?php
$FirstArray = array('a', 'b', 'c', 'd');
$SecondArray = array('1', '2', '3', '4');

for ($index = 0 ; $index < count($FirstArray); $index ++) {
  echo $FirstArray[$index] . $SecondArray[$index];
  echo "<br/>";
}
?>
5
T.Todua

Non, car ces tableaux peuvent contenir un autre nombre d'éléments.

Vous devez explicitement écrire quelque chose comme ça:

for ($i = 0; $i < count($courses) && $i < count($sections); ++$i) {
    $course = $courses[$i];
    $section = $sections[$i];

    //here the code you wanted before
}
2
Daimon

Non, c'est peut-être l'un des rares cas où les curseurs de tableau de PHP sont utiles:

reset($sections);
foreach ($courses as $course)
{
 list($section) = each($sections);
}
2
AndreKR

Qu'est-ce que cela ferait exactement? Sont $courses et $sections juste deux tableaux séparés, et vous souhaitez effectuer la même fonction pour les valeurs de chacun? Vous pourriez toujours faire:

foreach(array_merge($courses, $sections) as $thing) { ... }

Cela fait toutes les hypothèses habituelles sur array_merge, bien sûr.

Ou est-ce que $sections vient de $course et vous voulez faire quelque chose pour chaque section de chaque cours?

foreach($courses as $course) {
    foreach($sections as $section) {
        // Here ya go
    }
}
1
VoteyDisciple

comme ça?

foreach($array as $b=>$c){

}
0
Edmhs