问题
Original Issue:
I am using readdir to snag file names from multiple directories. I was wondering if there is a way to arrange the data so that each time it starts a new directory it makes a new column i.e.
---| user1 | user2 | user3 |
---| file1a | file2a | file3a |
---| file1b | file2b | file3b |
---| file1c | file2c | file3c |
---| file1d | ^ | file3d |
---| file1e | | | ^ |
---| ^ | end | | |
---| | | dir2 | end |
---| end | #start | dir3 |
---| dir1 | col3 | etc. |
---| #start | | |
---| col2 | | |
if this is possible that would be great; as far as displaying the user names across the top I have that part down already. I just need to know if the columns part can be done and if so how to do it.
The coding that I have so far is:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<table border="1">
<?php
if ($handle = opendir('Users/')) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
echo '<th>';
echo "$entry\n";
echo '</th>';
}
}
}
?>
<?php
$folders = @scandir('Users');
foreach($folders as $item){
if ((substr($item, 0, 1) == '.') || (preg_match("/\.php$/", $item)))
continue;
if (is_dir("Users/$item")){
$target_folders = @scandir("Users/$item/uploaded/");
foreach($target_folders as $target_item){
if ((!preg_match("/^[.]/",$target_item)) || (!is_dir("Users/$item/uploaded/$target_item")));
if ((substr($target_item, 0, 1) == '.'))
continue;
echo '<tr>';
echo '<td>';
echo $target_item;
echo '</td>';
echo '</tr>';
}
}
}
?>
</table>
</body>
</html>
回答1:
Achieved with the following code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<?php
echo '<table class="table"><tr>';
$folders = @scandir('Users');
foreach($folders as $item):
if ((substr($item, 0, 1) == '.') || (preg_match("/\.php$/", $item)))
continue;
?>
<td align="top">
<table width="220" border="1" valign="top">
<tr><th width="210" valign="top"><?php echo $item;?></th></tr>
<?php
if (is_dir("Users/$item"))
$target_folders = @scandir("Users/$item/uploaded/");
foreach($target_folders as $target_item){
if ((!preg_match("/^[.]/",$target_item)) || (!is_dir("Users/$item/uploaded/$target_item"))){
if ((substr($target_item, 0, 1) == '.'))
continue;
?><tr><td><?php echo $target_item ;?></td></tr><?php
}
}
?>
</table>
</td>
<?php
endforeach;
echo '</tr></table>';
?>
<style type="text/css">
td {
vertical-align: top;
}
</style>
</body>
</html>
来源:https://stackoverflow.com/questions/19025061/start-new-column-when-readdir-moves-to-new-dir