2
votes

Affichage du tableau php en trois colonnes, élément de première ligne un et élément de deuxième et troisième ligne

 <div class="inner">First</div>
 <div class="inner">Second Second</div>
 <div class="inner">Second Second</div>

4 commentaires

D'où vient $ out2 ?


Utilisez l'opérateur modulo sur le compteur de boucle. $ b% 3 == 0 signifie première colonne, $ b% 3! = 0 signifie deuxième ou troisième. (Nécessite de démarrer votre compteur à 0 pour le premier objet.)


Ou divisez votre matrice en morceaux de taille 3.


Vous pouvez également obtenir le premier élément, le désactiver et découper le tableau en morceaux de taille 2. facile


4 Réponses :


1
votes

Essayez ceci:

$first = true;
$all = [];
$couples = [];
foreach ($settings['items'] as $item){
    if($first){
        $first = false;
        $first_out = 'First'; //or whatever
        $all[] = $first_out;
    }else{
        if(count($couples) == 2){
            $all[] = $couples;
            $couples = [];
        }
        $couples[] = 'Second';
    }
}
foreach($all as $value){
    echo '<div class="inner">'.implode(',', $value).'</div>';
}


0 commentaires

0
votes

Un peu de pré-dispute, supprimez le premier élément, puis fusionnez-le dans le tableau fragmenté restant.

array(3) {
    [0]=>
    array(1) {
    [0]=>
    string(3) "foo"
    }
    [1]=>
    array(2) {
    [0]=>
    string(3) "foo"
    [1]=>
    string(3) "foo"
    }
    [2]=>
    array(2) {
    [0]=>
    string(3) "foo"
    [1]=>
    string(3) "foo"
    }
}
<div class="inner">foo</div>
<div class="inner">foo foo</div>
<div class="inner">foo foo</div>

Sortie:

<?php
$items   = array_fill(0, 5, 'foo'); // An array of five 'foo's.
$first   = array_shift($items);
$chunked = array_chunk($items, 2);
$chunked = array_merge([[$first]], $chunked);

var_dump($chunked);

foreach($chunked as $chunk)
{
    echo '<div class="inner">' . implode(' ', $chunk) . "</div>\n";
}


0 commentaires

0
votes

Comme vous n'utilisez pas la valeur de $ settings ['items'] dans le code, vous pouvez simplement travailler avec cette longueur de tableau

$count = count($settings['items']);
if ($count--) echo `<div class="inner">First</div>`;
while($count > 1) {
   echo '<div class="inner">Second Second</div>';
   $count -= 2;
}
if ($count--) echo `<div class="inner">Second</div>`;


1 commentaires

J'utiliserai $ settings ['items']



0
votes

Vous pouvez essayer ceci,

$b = 0;
for($j = 1; $j <= 2; $j++){
    $b++;
    for($i = 1; $i <= $b;$i++){
        switch($b){
            case '1': echo '<div class="inner">FIRST</div>';break;
            case '2': echo '<div class="inner">SECOND SECOND</div>';break;
        }
    }
}


0 commentaires