I am trying to create an array from a function.
The function:
$results = [];
function getDirEnties($directory, &$results) {
$entries = scandir($directory);
foreach ($entries as $item) {
if (!in_array($item, ['.', '..']) && substr($item, 0, 1) !== '.') {
$path = $directory . '/' . $item;
if (is_dir($path)) {
getDirEnties($path, $results);
} else {
$pathInfo = pathinfo($path);
$name = $pathInfo['filename'];
$type = 'unknown';
if (!empty($pathInfo['extension'])) {
$name .= "." . $pathInfo['extension'];
switch (strtolower($pathInfo['extension'])) {
case "gif":
case "jpg":
case "png":
case "jpeg":
case "bmp":
//etc..
$type = 'image';
break;
case "mp4":
$type = 'media';
break;
}
}
$data = [
'name' => $name,
'path' => $pathInfo['dirname'],
'type' => $type,
'time' => filemtime($path)
];
$results[] = $data;
}
}
}
return $results;
}
to populate the function I have the following:
$stmt=$db->prepare('SELECT friend2 as username FROM list_friends
WHERE (friend1 = :username AND friend2 <> :username)
UNION
SELECT friend1 as username FROM list_friends
WHERE (friend2 = :username AND friend1 <> :username)');
$stmt->bindParam(':username', $username);
$stmt->execute();
$friend_rows = $stmt->fetchAll();
foreach ($friend_rows as $rows) {
$friend = strtolower($rows['username']);
$directoryToScan = '/path/to/'.$friend;
$tree = getDirEnties($directoryToScan, $results);
}
I am then trying to echo it out as follows:
function cmp($a, $b) {
$ad = new DateTime($a['time']);
$bd = new DateTime($b['time']);
if ($ad == $bd) {
return 0;
}
return $ad < $bd ? -1 : 1;
}
if ($data !== NULL) {
usort($data, "cmp");
for($i=(count($data)-1)-($feed-1);$i>=(count($data)-10)-($feed-1);$i--){
if($data[$i]['type']=='image'){ echo $data[$i]['name']; }
}
}
I am JUST learning functions and have VERY limited experience with arrays, mostly with mysql arrays so I have no idea how to write this in such a way it returns the $data[] array properly as needed.