0

i am searching file using following code but in output it shows result 5 times. this is the code. if something wrong in the code then plz tell.

$root1 = $_SERVER['DOCUMENT_ROOT']; 

$directory =
$root1.'/Place4Info/Data/Admin_data/';

$it = new
RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));

while($it->valid()) 
{ 
    if(!$it->isDot())
    {
        $files =glob($directory.$it->getSubPath().'/*.jpg');
        print_r($files);
    }
    $it->next();
}

& the output is :-

Array ( [0] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports19.jpg [1] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports21.jpg [2] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports22.jpg [3] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports3.jpg ) Array ( [0] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports19.jpg [1] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports21.jpg [2] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports22.jpg [3] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports3.jpg ) Array ( [0] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports19.jpg [1] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports21.jpg [2] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports22.jpg [3] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports3.jpg ) Array ( [0] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports19.jpg [1] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports21.jpg [2] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports22.jpg [3] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports3.jpg ) Array ( [0] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports19.jpg [1] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports21.jpg [2] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports22.jpg [3] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/admin/sports3.jpg ) Array ( ) Array ( [0] => C:/Program Files/EasyPHP-5.3.2i/www/Place4Info/Data/Admin_data/pratikg88/matromonial24.jpg ) 

1 Answer 1

3

you are calling print_r every time a new file is added. move it after your while loop

$files = array();
while($it->valid()) {
    if(!$it->isDot()) {
        $files = array_merge($files, glob($directory.$it->getSubPath().'/*.jpg'));
    }
    $it->next();
}
print_r($files);

your array is fine, you are simply printing it too often

edit

i assume you want to retrieve all jpg files from your directories, there's a good example in on of the comments on RecursiveDirectoryIterator manual page on php.net:

$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('path/to/project/'));
$Regex = new RegexIterator($it, '/^.+\.jpg$/i', RecursiveRegexIterator::GET_MATCH);

quote:

$Regex will contain a single index array for each PHP file.

Sign up to request clarification or add additional context in comments.

4 Comments

hey dude its not working if i add specific filename if i put print statement in while loop then it works but the duplication problem occur again
@pritkg88: oh, i now see another error, you were clearing the $files array with each iteration, see my edit
hey dude i got it it would be like this $i=0; $num=1; while($it->valid() and $i<$num) { if(!$it->isDot()) { $files = glob($directory.$it->getSubPath().'/*.jpg'); print_r($files); $i++; } $it->next(); }
thanks for help & giving your valuable time to solve my query.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.