ik heb de volgende opzet:

Array
(
    [0] => Array
        (
            [nummer] => 104762
            [positie] => h
        )

    [1] => Array
        (
            [nummer] => 104761
            [positie] => h
        )

    [2] => Array
        (
            [nummer] => 104750
            [positie] => h
        )

    [3] => Array
        (
            [nummer] => 104741
            [positie] => w
        )

    [4] => Array
        (
            [nummer] => 104734
            [positie] => w
        )

    [5] => Array
        (
            [nummer] => 104731
            [positie] => h
        )

    [6] => Array
        (
            [nummer] => 104727
            [positie] => h
        )

    [7] => Array
        (
            [nummer] => 104719
            [positie] => w
        )

    [8] => Array
        (
            [nummer] => 104693
            [positie] => w
        )

    [9] => Array
        (
            [nummer] => 104607
            [positie] => w
        )

)


nu wil ik het als volgt laten weergeven hebben:

Te beginnen met 3x een W
vervolgens 3x een H, enzovoorts
vervolgens dan het "overige"

Dus zoiets:
3x w
3x h
2x w
2x h

Iemand een idee?
Nee, dat is geen sorteren.
Daar zullen andere voorwaarden aan moeten zitten.
Even de titel aangepast en mijn bericht.... ik hoop dat het beter verwoord is
Ik snap de vraag niet goed.
Je hebt een array met 9 key's die een array bevatten.

elke positie is een 'w' ?

Maar je wilt een h ? :D
Geef eens een goed voorbeeld van array :)
Is de volgorde van belang? Wat zijn de precieze condities voor het "opbreken"? etc.

Misschien is het makkelijker om eerst alles te splitsen in een w-array en een h-array, en daarna je ding daarmee te doen (wat dat ook moge zijn)?
Helder... nieuwe poging.

ik gebruik bovenstaande array, deze word door een loop gehaald en ik krijg netjes een "overzicht".
Deze array laat ik vervolgens verdelen over rijen van 3.

nummer 1 | nummer 2 | nummer 3
nummer 4 | nummer 5 | nummer 6
...etc.

Nu wil ik een afbeelding bij deze nummers plaatsen.. dit werkt allemaal prima :-) kwestie van <img src=""> gebruiken en klaar... nog niks spannends aan.

Maar nu komt het:
De afbeeldingen zijn verschillend in formaat: afbeeldingen met een "w" zijn liggende afbeeldingen.
en de afbeeldingen met een "h" zijn staande.

Wat ik nu wil:
Ik wil de array, zodanig herschikken dat ik dus een rij krijg met:
liggende afbeelding | liggende afbeelding | liggende afbeelding
staande afbeelding | staande afbeelding | staande afbeelding

indien er een te kort is aan liggende afbeeldingen:
liggende afbeelding | liggende afbeelding | leeg laten
staande afbeelding | staande afbeelding | staande afbeelding

indien er een te kort is aan staande afbeeldingen:
liggende afbeelding | leeg laten | leeg laten

Ennnn zit er een limiet op het aantal af te drukken afbeeldingen? Bijvoorbeeld door een paginering? Of geef je alles op 1 pagina weer?

Dus zolang je genoeg liggende afbeeldingen / staande afbeeldingen hebt om een rij te vullen wil je deze laten afwisselen? Het "probleem" is dan gereduceerd tot de laatste (twee) rij(en) indien het aantal staande/liggende afbeeldingen geen veelvoud van 3 is?
Er zit op dit moment geen limiet.... maar er komt uiteindelijk wel een paginering in.
Ik verwacht 30 resultaten te tonen.. uiteindelijk maakt het niet echt uit of het er nou 12 of 24 of 30 zijn.

Ik begrijp dat er een "probleem" ontstaat, maar dat is niet hinderlijk, want je praat dan over 2 rijen die dus een "mix" kunnen bevatten... tenzij er een controle is op <= 3 en dan een nieuwe rij te starten.

Ik begrijp ook dat de 2e pagina wederom een nieuwe set resultaten heeft.. maar dit zou naar mijn mening ook niet hinderlijk moeten zijn, omdat er dan weer opnieuw geteld zou worden van 30 resultaten...

De opbouw die ik voornamelijk zoek is: om en om per 3, en anders aanvullen of opbreken in een nieuwe rij.

Ik denk dat als je de resultaten opdeelt in twee arrays dat je de rest wel kunt regelen tijdens het weergeven zelf eigenlijk. Verdere sortering/opdeling lijkt mij (voor nu) niet echt nodig.

Wel ontstaat er een interessant probleem als je veel meer staande dan liggende afbeeldingen hebt (of andersom) ingeval je gebruik gaat maken van paginering. Hoe zorg je er dan voor dat je (bij voorkeur) enkel relevante data ophaalt voor die pagina? Het staat dan namelijk niet vast dat je 15 staande en 15 liggende afbeeldingen hebt om een pagina te vullen.
Je zou ook gewoon je array kunnen splitsen?

$landscape = array();
$portrait = array();
foreach($mainArray as $key => $value) {
 if($value['positie'] == 'w')
  $landscape[] = $value;
 else
  $portrait[] = $value;
}

Dan heb je al je liggende en staande afbeeldingen los van elkaar.
Dan kun je heus wel in nog een loop door $mainArray kijken of je naar een nieuwe regel ga en/of wat je dan gaat gebruiken, landscape of portrait
"k denk dat als je de resultaten opdeelt in twee arrays dat je de rest wel kunt regelen"
Dit voorstel kreeg ik ook al van een "ander".
Lijkt mij inderdaad ook de beste manier als ik het zo aanhoor.

"Wel ontstaat er een interessant probleem"
Scherp opgemerkt ;-)

Ik denk zelf dat ik een count op moet gaan gooien, per set van resultaten om de route te bepalen om de opbouw te maken.. stel ik heb alleen maar liggende... ja dan hoef ik de array ook niet op te splitsen... ;-)




Reageren