I am trying to get an HTML-based recursive directory listing based on code here:
http://webdevel.blogspot.in/2008/06/recursive-directory-listing-php.html
Code runs fine but it throws some errors:
Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\directory5.php on line 34
Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\directory5.php on line 32
Strict Standards: Only variables should be passed by reference in C:\xampp\htdocs\directory5.php on line 34
Below is the excerpt of code:
else { // the extension is after the last "." $extension = strtolower(array_pop(explode(".", $value))); //Line 32 // the file name is before the last "." $fileName = array_shift(explode(".", $value)); //Line 34 // continue to next item if not one of the desired file types if(!in_array("*", $fileTypes) && !in_array($extension, $fileTypes)) continue; // add the list item $results[] = "<li class=\"file $extension\"><a href=\"".str_replace("\\", "/", $directory)."/$value\">".$displayName($fileName, $extension)."</a></li>\n"; }
This should be OK
$value = explode(".", $value); $extension = strtolower(array_pop($value)); //Line 32 // the file name is before the last "." $fileName = array_shift($value); //Line 34
array_shift
the only parameter is an array passed by reference. The return value of explode(".", $value)
does not have any reference. Hence the error.
You should store the return value to a variable first.
$arr = explode(".", $value); $extension = strtolower(array_pop($arr)); $fileName = array_shift($arr);
From PHP.net
The following things can be passed by reference:
- Variables, i.e. foo($a) - New statements, i.e. foo(new foobar()) - [References returned from functions][2]
No other expressions should be passed by reference, as the result is undefined. For example, the following examples of passing by reference are invalid:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With