လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> dir function ကိုတဆင့် subdirectories ကိုဖတ်နည်း

dir function ကိုတဆင့် subdirectories ကိုဖတ်နည်း

gitbox 2025-05-31

1 ။ dir () function ကိုမိတ်ဆက်

dir () function ကို directory လက်ကိုင်ကိုဖွင့်ပြီး လမ်းညွှန် အရာဝတ်ထုကိုပြန်ပေးရန်အသုံးပြုသည်။ directory ထဲတွင်ဖိုင်နှင့် subdirectory အမည်များကို ဖတ်ရှုခြင်း ()) ၏နည်းလမ်းကိုဖတ်ရှုခြင်း အားဖြင့်တစ်ခုဖတ်နိုင်သည်။

Syntax ဥပမာ:

 $dir = dir('ခေြလမ်း');
while (($file = $dir->read()) !== false) {
    echo $file . PHP_EOL;
}
$dir->close();

Read () နည်းလမ်းသည်အထူးလမ်းညွှန်နှစ်ခုအပါအ 0 င်လက်ရှိလမ်းညွှန်တွင်ဖိုင်အမည်တစ်ခုစီကိုပြန်ပို့မည်ဟုသတိပြုပါ နှင့် .. နှင့်ဖယ်ထုတ်ထားခံရဖို့လိုအပ်ပါတယ်။


2 ။ Subdirectories အားလုံးအတွက်အကောင်အထည်ဖော်မှုဥပမာကိုရယူပါ

အောက်ဖော်ပြပါသည်နမူနာကုဒ်ဖြစ်သည်

 <?php
function getSubDirectories($path) {
    $subDirs = [];

    if (!is_dir($path)) {
        return $subDirs; // ခေြလမ်း不是目录,တစ် ဦး အချည်းနှီးသောခင်းကျင်းပြန်လာပါ
    }

    $dir = dir($path);
    while (($entry = $dir->read()) !== false) {
        // ထုတ်ပယ် . နှင့် ..
        if ($entry === '.' || $entry === '..') {
            continue;
        }

        $fullPath = $path . DIRECTORY_SEPARATOR . $entry;
        if (is_dir($fullPath)) {
            $subDirs[] = $entry;
        }
    }
    $dir->close();

    return $subDirs;
}

// ဖုန်းခေါ်ဆိုမှုခေါ်ဆိုမှု
$path = '/var/www/html';
$dirs = getSubDirectories($path);
print_r($dirs);
?>

ဒီကုဒ်ထဲမှာ:

  • Input Path သည်လမ်းညွှန်တစ်ခုရှိမရှိပထမ ဦး ဆုံးစစ်ဆေးပါ။

  • dir () မှတစ်ဆင့် directory လက်ကိုင်ကိုဖွင့်ပါ။

  • တစ်ခုချင်းစီကို entry တစ်ခုစီကိုဖတ်ပါ နှင့် ...

  • ၎င်းသည် directory ဟုတ်မဟုတ်ဆုံးဖြတ်ရန် is_dir () ကို သုံးပါ။

  • subdirectory အမည်များအားလုံးကို array ထဲသို့သိမ်းဆည်းပြီးပြန်လာပါ။


3 ။ URL ဥပမာများကိုပေါင်းစပ်ခြင်း

output page ရှိ subdirectory တစ်ခုချင်းစီအတွက် Access Link ကိုထုတ်လုပ်ရန်လိုအပ်ပါကနမူနာကုဒ်မှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
$path = '/var/www/html';
$dir = dir($path);
while (($entry = $dir->read()) !== false) {
    if ($entry === '.' || $entry === '..') {
        continue;
    }
    $fullPath = $path . DIRECTORY_SEPARATOR . $entry;
    if (is_dir($fullPath)) {
        echo '<a href="http://gitbox.net/' . $entry . '">' . $entry . '</a><br>';
    }
}
$dir->close();
?>

ဤတွင်ကျွန်ုပ်တို့သည်မူလ URL domain name ကို GitBox.net ဖြင့်အစားထိုးရန်လွယ်ကူသောဆန္ဒပြမှုအတွက်အစားထိုးခဲ့သည်။


4 ။ လက်တွေ့ကျသောအကြံပြုချက်များ

  • Directory Non-directory items : filter _Dir () ကိုသာ directory များကိုသာပြန်လည်ရယူရန်သေချာစေရန် filter ။

  • recursive traversal : အဆင့်အားလုံး၏ subdirectories ကိုသင်ရရှိလိုပါက၎င်းသည် directory ဖြစ်သည်ကိုဆုံးဖြတ်ပြီးနောက်အချက်အလက်များကိုထုတ်ဖော်ပြောဆိုနိုင်သည်။

  • Path Stitching : Cross-platform compatibility ကိုသေချာစေရန် directory_separator ကို သုံးပါ။

  • ခြွင်းချက်ကိုင်တွယ်ခြင်း - လမ်းညွှန်သည်တည်ရှိခြင်းရှိမရှိဆုံးဖြတ်ရန်မှာအမှားအယွင်းများကိုရှောင်ရှားရန်မဖွင့်မီဖတ်ရှုနိုင်သည်။


အထက်ဖော်ပြပါနည်းစနစ်များနှင့်ပေါင်းစပ်ထားသော dir () function ကိုအသုံးပြုခြင်းသည်အခြေအနေများအများစု၏လိုအပ်ချက်များကိုဖြည့်ဆည်းရန်လမ်းညွှန်ဖြတ်သန်းခြင်းနှင့် subdirectory ရယူခြင်းကိုအလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။


 <?php
function getAllSubDirsRecursive($path) {
    $result = [];

    if (!is_dir($path)) {
        return $result;
    }

    $dir = dir($path);
    while (($entry = $dir->read()) !== false) {
        if ($entry === '.' || $entry === '..') {
            continue;
        }

        $fullPath = $path . DIRECTORY_SEPARATOR . $entry;
        if (is_dir($fullPath)) {
            $result[] = $entry;
            // subdirectories ရရန် recursive ခေါ်ဆိုမှု
            $result = array_merge($result, getAllSubDirsRecursive($fullPath));
        }
    }
    $dir->close();

    return $result;
}

$dirs = getAllSubDirsRecursive('/var/www/html');
print_r($dirs);
?>

ပိုမိုရှုပ်ထွေးသော directory အဆောက်အအုံများကိုကိုင်တွယ်ရန်အတွက်ဤကုဒ်သည်အဆင့်တိုင်းတွင် Subdirectorirectorirectorirection များကိုအားသွင်းပါလိမ့်မည်။