Permalänk
Medlem

vända ordningen i php kod

Jag sitter och knopar på en kod som letar reda på alla bilder jag har i en viss mapp. Mappstrukturen ser ut ungefär såhär:

-img
--2016
---0701
---0702
---0703

and so on...

såhär ser min php kod ut atm:

<?php $directory = 'img/2016/'; $extension = '/*.JPG'; if ( file_exists($directory)) { foreach(glob($directory.'*'.$extension, GLOB_MARK) as $file) { echo "<img src='$file' style='height:30px'>"; } } else { print "Directory ${directory} doesn't exist!"; } ?>

Det fungerar som det ska men just nu visas bilderna från första mappen först och den sista mappen sist, går det ändra ordningen den söker igenom mapparna så bilderna från sista mappen hamnar först?

jag har provat lite olika array_reverse varianter men jag får inte riktigt till det...

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem

@pellski87: Du kan göra på flera sätt. Enklast är nog att spara ner resultaten för varje map i en array. Då har du ett antal arrayer (i förslagsvis en array) där den första är första mappen osv. Sedan ittererar du över dessa i bakvänd ordning och skriver antingen ut resultatet eller så skapar du en ny array med resultatet i rätt ordning med array_merge, där du utgår ifrån en tom array och mergar in resultatet för varje array då ittererar. Tänk på att varje array för varje map har en ordning som du kan ändra med array_reverse om det krävs också.

Visa signatur

Huvudriggen är en Gigabyte Aorus Xtreme | 128gb DDR5 6000 | Ryzen 7950X | 3080Ti
Utöver det är det för många datorer, boxar och servar för att lista :P

Permalänk
Medlem
Skrivet av inquam:

@pellski87: Du kan göra på flera sätt. Enklast är nog att spara ner resultaten för varje map i en array. Då har du ett antal arrayer (i förslagsvis en array) där den första är första mappen osv. Sedan ittererar du över dessa i bakvänd ordning och skriver antingen ut resultatet eller så skapar du en ny array med resultatet i rätt ordning med array_merge, där du utgår ifrån en tom array och mergar in resultatet för varje array då ittererar. Tänk på att varje array för varje map har en ordning som du kan ändra med array_reverse om det krävs också.

Tack för tipsen, dock kändes det där väldigt överkurs för mig. Jag ska försöka läsa på

Visa signatur

Citera om du vill ha svar :)

Permalänk
Medlem
Skrivet av pellski87:

Tack för tipsen, dock kändes det där väldigt överkurs för mig. Jag ska försöka läsa på

$files[] = $file; // Här lägger du till $file i arrayen $files. Denna ska ersätta innehållet i din nuvarande foreach.
Sen kör du array_reverse på $files (http://php.net/manual/en/function.array-reverse.php)
för att sen köra en foreach där du skriver ut resultatet på array_reverse och viola.

Permalänk
Medlem

efter lite googlande och läsande löste det jag det på detta viset:

<?php $pics = glob("img/2016/*/*.{JPG,PNG,GIF,jpg,png,gif}", GLOB_BRACE); if(count($pics)) { rsort($pics); foreach($pics as $pictures) { echo "<img src='$pictures' style='height:30px'>"; style='width:100%'></a>"; }} else { echo "Tomt!"; } ?>

vette fan hur korrekt det är, men det funkar som jag vill iaf

Visa signatur

Citera om du vill ha svar :)