Saya sedang mengerjakan proyek yang sedikit baru. Saya ingin tahu berapa banyak file di direktori tertentu.
<div id="header">
<?php
$dir = opendir('uploads/'); # This is the directory it will count from
$i = 0; # Integer starts at 0 before counting
# While false is not equal to the filedirectory
while (false !== ($file = readdir($dir))) {
if (!in_array($file, array('.', '..') and !is_dir($file)) $i++;
}
echo "There were $i files"; # Prints out how many were in the directory
?>
</div>
Inilah yang saya miliki sejauh ini (dari pencarian). Namun, itu tidak muncul dengan benar? Saya telah menambahkan beberapa catatan jadi jangan ragu untuk menghapusnya, hanya agar saya dapat memahaminya sebaik mungkin.
Jika Anda memerlukan beberapa informasi lebih lanjut atau merasa seolah-olah saya belum cukup menjelaskan hal ini, silakan menyatakannya.
count(scandir("uploads/")) - 2
daripada loop itu.Jawaban:
Anda cukup melakukan hal berikut:
sumber
FilesystemIterator::SKIP_DOTS
karena itu adalah default.Anda bisa mendapatkan filecount seperti ini:
di mana
"*"
adalah Anda dapat mengubahnya menjadi jenis file tertentu jika Anda mau"*.jpg"
atau Anda dapat melakukan beberapa jenis file seperti ini:yang
GLOB_BRACE
mengembang bendera {a, b, c} untuk pertandingan 'a', 'b', atau 'c'sumber
__DIR__ .
sebelum"/path/to/dir/"
(__DIR__ . "/path/to/dir/"
)/path/to/dir
akan gagal, karena/
artinya pertamastarting from root dir
. Jika adapath/to/dir
, maka ya,__DIR__ . '/path/to/dir'
akan membantu (dalam hal ini Anda harus menggunakan/
setelah__DIR__
Coba ini.
Tidak menghitung '.' dan '..'.
sumber
$num_files = count($files) - 2;
? Karena.
juga..
.
dan..
coba ini: $ files =array_diff( scandir("/dir"), array(".", "..") );
array_slice(scandir($directory),2)
Kamu harus punya :
sumber
Jawaban terbaik menurut saya:
sumber
Karena saya membutuhkan ini juga, saya ingin tahu alternatif mana yang paling cepat.
Saya menemukan bahwa - jika yang Anda inginkan hanyalah jumlah file - solusi Baba adalah banyak lebih cepat daripada yang lain. Saya cukup terkejut.
Cobalah sendiri:
Uji coba: (jelas,
glob()
tidak menghitung file titik)sumber
Bekerja Demo
sumber
Saya menggunakan ini:
sumber
array_slice
bekerja sama sepertisubstr
fungsi, hanya bekerja dengan array.Misalnya, ini akan memotong dua kunci array pertama dari array:
Dan jika Anda mengabaikan parameter pertama, seperti pada contoh pertama, array tidak akan berisi dua pasangan kunci / nilai pertama * ('.' Dan '..').
sumber
Mungkin berguna bagi seseorang. Pada sistem Windows, Anda dapat membiarkan Windows melakukan pekerjaan dengan memanggil perintah dir. Saya menggunakan jalur absolut, seperti
E:/mydir/mysubdir
.sumber
Ini harus bekerja masuk direktori di dirname. dan biarkan keajaiban terjadi.
sumber
sumber
Berdasarkan jawaban yang diterima, berikut adalah cara untuk menghitung semua file dalam direktori SECARA REKUR:
sumber
Berikut adalah fungsi PHP Linux yang sangat cepat. Sedikit kotor, tapi itu menyelesaikan pekerjaan!
$ dir - path ke direktori
$ type - f, d atau false (secara default)
f - hanya mengembalikan jumlah file
d - hanya mengembalikan hitungan folder
false - mengembalikan jumlah file dan folder
Anda dapat menyesuaikan agar sesuai dengan kebutuhan Anda.
Harap dicatat bahwa ini tidak akan berfungsi di Windows.
sumber
sederhana tambahkan selesai ....
sumber