3 votes

php - Foreach - Envelopper <li> </li> avec deux résultats à l'intérieur, puis répéter.

Travailler avec php - J'essaie d'exécuter un "foreach" sur un tableau, mais je veux envelopper tous les deux résultats dans des balises li. La sortie ressemblera à ceci.

<li>

<div>result 1</div>

<div>result 2</div>

</li>

<li>

<div>result 3</div>

<div>result 4</div>

</li>

<li>

<div>result 5</div>

<div>result 6</div>

</li>

Comment dois-je m'y prendre ?

Gracias.

9voto

shesek Points 2726
$chunks = array_chunk($arr, 2);
foreach ($chunks as $chunk) {
    // $chunk could have either 2 elements, or just one on the last iteration on an array with odd number of elements
    echo '<li>';
    foreach ($chunk as $value) {
        echo '<div>' . $value . '</div>';
    }
    echo '</li>';
}

1voto

Fabio Cicerchia Points 599
$results = array(1, 2, 3, 4, 5, 6);
echo "<li>";
foreach($results as $pos => $result) {
    if ($pos > 2 && $pos % 2 == 0) {
        echo "</li>\n<li>";
    }
    echo "<div>result $result</div>";
}
echo "</li>";

ou plus simplement :

$results = array(1, 2, 3, 4, 5, 6);
$max = count($results);
for($i = 0; $i < $max; $i++) {
    echo "<li>";
    echo "<div>result " . $results[$i] . "</div>";
    $i++;
    echo "<div>result " . $results[$i] . "</div>";
    echo "</li>";
}

1voto

Andrej L Points 3348
$count = 0;
foreach ($array as $key=>$value) {
    ++$count;
    if ($count == 1) {
        echo "<li>";
        echo "<div>" . $value."</div>";    
    } else {
        echo "<div>" . $value."</div>";    
        echo "</li>";
        $count = 0;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X