में अंतिम बार संशोधित फ़ाइल जाओ वहाँ एक निर्देशिका में केवल पिछले फ़ाइल का चयन करने का कोई तरीका है (एक्सटेंशन jpg|png|gif
साथ?)एक निर्देशिका
या मैं पूरी निर्देशिका पार्स और filemtime
का उपयोग कर जांच करने के लिए है?
में अंतिम बार संशोधित फ़ाइल जाओ वहाँ एक निर्देशिका में केवल पिछले फ़ाइल का चयन करने का कोई तरीका है (एक्सटेंशन jpg|png|gif
साथ?)एक निर्देशिका
या मैं पूरी निर्देशिका पार्स और filemtime
का उपयोग कर जांच करने के लिए है?
हां आपको उन सभी के माध्यम से पढ़ना होगा। लेकिन चूंकि निर्देशिका पहुंच कैश की जाती है, इसलिए आपको इसके बारे में वास्तव में चिंता नहीं करनी चाहिए।
$files = array_merge(glob("img/*.png"), glob("img/*.jpg"));
$files = array_combine($files, array_map("filemtime", $files));
arsort($files);
$latest_file = key($files);
मुझे याद नहीं है कि आपने कभी ऐसा फ़ंक्शन देखा है जो आप पूछेंगे।
तो, मुझे लगता है कि आपको सभी (कम से कम jpg/png/gif) फ़ाइलों के माध्यम से जाना होगा, और उनमें से प्रत्येक की अंतिम संशोधन तिथि की खोज करनी होगी।
यहाँ एक संभव समाधान है, एसपीएल की DirectoryIterator
वर्ग के आधार पर:
$path = null;
$timestamp = null;
$dirname = dirname(__FILE__);
$dir = new DirectoryIterator($dirname);
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot()) {
if ($fileinfo->getMTime() > $timestamp) {
// current file has been modified more recently
// than any other file we've checked until now
$path = $fileinfo->getFilename();
$timestamp = $fileinfo->getMTime();
}
}
}
var_dump($path);
बेशक , आप भी readdir()
और अन्य इसी कार्यों के साथ एक ही बात कर सकता है।
php में निर्मित जाना चाहिए था इस तरह के एक समारोह तो हम – dynamic
सब dir पार्स करने के लिए की जरूरत नहीं है .. imo इस समारोह लेखन कि कठिन नहीं है ;-) ;;; और आपको थोड़ा विशिष्ट दिखने की ज़रूरत है, इसलिए यह कोर-डेवलपर्स के लिए PHP में स्वयं के फ़ंक्शन को लागू नहीं करना चाहता है। –
यहां तक कि आपने एक्सस्टेंशन लॉल के लिए भी जांच नहीं की है, इसलिए मैं इसे स्वीकार करने जा रहा हूं क्योंकि मुझे यकीन है कि रीडडियर (या यह समतुल्य) एक ग्लोब से तेज है + दूसरा पार्स – dynamic
function listdirfile_by_date($path)
{
$dir = opendir($path);
$list = array();
while($file = readdir($dir))
{
if($file != '..' && $file != '.')
{
$mtime = filemtime($path . $file) . ',' . $file;
$list[$mtime] = $file;
}
}
closedir($dir);
krsort($list);
foreach($list as $key => $value)
{
return $list[$key];
}
return '';
}
नहीं। यह एक बिल्टिन फ़ाइल नाम फ़िल्टर के साथ सिर्फ एक स्कैंडर() है। (मैंने एक बार PHP4 पुनर्मूल्यांकन लिखा है)। यहां वास्तविक समस्या दो ग्लोब का उपयोग कर रही है। यह 'ग्लोब ("img/*। {png' , jpg, gif} ", GLOB_BRACE) 'आपके मामले में। – mario
सच है, स्कैंडर * सभी * प्रविष्टियां देता है। लेकिन ग्लोब इसे नीचे फ़िल्टर करता है पहले से। रीडडियर दृष्टिकोण में अंतर यह है कि आप इसे अधिक PHP/सिस्टम कॉल के साथ स्टॉप-एंड-गो फैशन में करते हैं। – mario
ग्लोब संकलित सी कोड में लूपिंग करता है, जबकि readdir को धीमी PHP की आवश्यकता होती है जबकि लूप। – mario