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?
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
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];
}
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];
}
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/>";
}
?>
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
}
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);
}
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
}
}
comme ça?
foreach($array as $b=>$c){
}