Alfabetik hattı ile çıkış ayrılması

3 Cevap php

Ben aşağıda kod bir dizindeki dosyaların isimlerini verir var. Dosya değişiklikleri ilk harfi (A dan B diyelim) zaman ek bir satır boşluk göre alfabetik dosya adlarını ayırmak istiyorum. Herhangi bir fikir? Teşekkürler.

            $dirs = scandir("Dir");
            foreach($dirs as $file)
            {
                    if (($file == '.')||($file == '..'))
                    {
                    }
                    elseif (is_dir($tdir.'/'.$file))
                    {
                            filesInDir($tdir.'/'.$file);
                    }
                    else
                    {
                            echo $file."<br>";
                    }
            }

3 Cevap

Sadece her dosya adının ilk karakterini izleyebilirsiniz. Sen ilk karakter için böyle $string[0] gibi dizi sözdizimi kullanarak bir dize bireysel karakterleri, erişebilirsiniz:

        $dirs = scandir("Dir");
        $char = null;
        foreach($dirs as $file)
        {
                if (($file == '.')||($file == '..'))
                {
                }
                elseif (is_dir($tdir.'/'.$file))
                {
                        filesInDir($tdir.'/'.$file);
                }
                else
                {
                        if ($file[0] != $char && $char !== null) echo "<br>";
                        echo $file."<br>";
                        $char = $file[0];
                }
        }

Sen döngünün sonunda önceki dosya adını saklayarak bu çözmek, ve sonra kullanarak, geçerli dosyanın ilk biriyle ilk karakterini karşılaştırabilirsiniz strncasecmp. ! Dönüş değeri = 0, daha sonra karakterler farklı ise; Bu şekilde, ilave bir BR etiketi eklenir.


            $dirs = scandir("Dir");
            foreach($dirs as $file)
            {
                    if (($file == '.')||($file == '..'))
                    {
                    }
                    elseif (is_dir($tdir.'/'.$file))
                    {
                            filesInDir($tdir.'/'.$file);
                    }
                    else
                    {
                            echo $file."<br>";
                            if (strncasecmp($file, $previousFile, 1)) echo "<br>";
                    }
                    $previousFile = $file;
            }

Bir kesmek tür, ANCAK üzerinde eğer * nix:

ls -al |  awk '{print $9}'

Alfabetik sıraya dizin içeriğini geri verecek.