• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

scandir - pomiń katalog

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
181 wizyt
pytanie zadane 16 listopada 2023 w PHP przez niezalogowany

Żeby wyświetlić folder oprócz wskazanych (mam trzy foldery których nie chcę widzieć), mam taki kod:

<?php
$dir    = 'licytacje/';
$pliki = scandir($dir);

            foreach($pliki as $plik)
            {
                if ($plik!= ".." && $plik!= ".")
                {
    echo $plik;
    }
            }
            
            ?>

kilku folderów nie  chcę widzieć, idzie to jakoś połączyć?

2 odpowiedzi

+1 głos
odpowiedź 16 listopada 2023 przez VBService Ekspert (256,320 p.)
wybrane 18 listopada 2023
 
Najlepsza

Proponuję użycie array_diff 

(folder1, ..., folder3 - pomijane)

    $dir = 'licytacje/';
    $files = array_diff(scandir($dir), ['.', '..', 'folder1', 'folder2', 'folder3']);
  
    echo join('<br>', $files);

 

komentarz 16 listopada 2023 przez szpon12 Obywatel (1,260 p.)
Schludne rozwiązanie :)
komentarz 16 listopada 2023 przez VBService Ekspert (256,320 p.)

Z użyciem glob

$dir = 'licytacje/';
$excluded = ['folder1', 'folder2', 'folder3'];
$folders = array_diff(array_map('basename', glob($dir . '*', GLOB_ONLYDIR)), $excluded);

echo join('<br>', $folders);

 

1
komentarz 18 listopada 2023 przez niezalogowany
Znam array_diff, tak zrobie
0 głosów
odpowiedź 16 listopada 2023 przez szpon12 Obywatel (1,260 p.)
edycja 16 listopada 2023 przez szpon12

Cześć, można to zrobić w na przykład ten sposób:

<?php

    $dir    = 'licytacje/';
    $pliki  = scandir($dir);
 
    $wylaczone_lokacje = [
        '.',
        '..',
        'loc_1',
        'loc_2',
        'loc_3'
    ];

    foreach($pliki as $plik){
        if (!in_array($plik, $wylaczone_lokacje)){
            echo "$plik <br>";
        }
    }
             
?>

Do twojego kodu dodałem tablicę która przetrzymuje wykluczone z wyszukiwania lokalizacje oraz funkcję in_array z poprzedzającym ją wykrzyknikiem. Działa to na zasadzie "jeżeli $plik nie odpowiada żadnemu wpisowi wykluczonemu zarejestrowanemu w tablicy kontynuuj działanie, inaczej przeskocz do kolejnej iteracji".

komentarz 16 listopada 2023 przez VBService Ekspert (256,320 p.)

wink

    $dir   = 'licytacje/';
    $pliki = scandir($dir);
  
    $wylaczone_lokacje = [
        '.',
        '..',
        'loc_1',
        'loc_2',
        'loc_3'
    ];
 
    foreach($pliki as $plik){
        if (in_array($plik, $wylaczone_lokacje)) continue;
        echo "$plik <br>";
    }

 

Podobne pytania

0 głosów
1 odpowiedź 474 wizyt
0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 28 marca 2021 w Systemy operacyjne, programy przez urbix01 Gaduła (3,290 p.)
0 głosów
1 odpowiedź 227 wizyt

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1785p. - Michal Drewniak
  9. 1744p. - rafalszastok
  10. 1724p. - Adrian Wieprzkowicz
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...