You are here: returning an array from a function « All PHP « IT news, forums, messages
returning an array from a function

Posted by Chris on 09/28/90 11:48

I am clearly missing something simple here....

I have a function (fileTree) that recursively reads all the files in a
directory passed to it, and returns an array of the files, I have included
the code for this function below.

When I call this function, the bit of debug code at the end will correctly
print the array of files I am expecting, and then returns.

However, what is returned form the function isnt the array, is a scalar that
just contains the value of the last element in the
array

I am calling the function like this :

$BrokenArray = array();
$BrokenArray = $this->fileTree($this->ProjectRoot,".c");

foreach (($this->fileTree($this->ProjectRoot,".c")) as $wibble)
{
print "Broken Array : $wibble <br>\n";
}


So it seems that the array in the function contains the right data, and by
doing "$BrokenArray = array();" i suspect I am making sure the varible it is
being assinged to isnt a scalar, so the only thing I can think of of is that
I need to do something fancy with the "return" statement so it knows it's a
array, but so far I have not not found anything that would help...

Cheers

Chris





function fileTree($directory,$ext)
{

$dir_array = array();
$file_array = array();

// what is the length of the extension
$ExtLen = strlen($ext);

if ($handle = opendir($directory))
{
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..")
{
// this is a directory, so recurse down it
if (is_dir($directory. "/" . $file))
{
$dir_array = array_merge($dir_array, $this->fileTree($directory.
"/" . $file,$ext));
$file = $directory . "/" . $file;
$dir_array[] = preg_replace("/\/\//si", "/", $file);
}

// this is a file, test it, and add it to list if need be
else
{

$file = $directory . "/" . $file;

// overall length of the $file string
$FileLen = strlen ($file);

// now match the last N chars with the extension
if ((substr ($file,($FileLen-$ExtLen),($FileLen))) == $ext)
{
$this->fileArray = array_merge($this->fileArray,$file);
$file_array = array_merge($file_array,$file);
}

}
}
}

closedir($handle);
}

// print out the array of files, to prove it is getting all the files
foreach ($file_array as $wibble)
{
print "Wibble : $wibble <br>\n";
}

return ($file_array);
}

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация