我想从一个目录中读取所有文件,并将它们存储在一个列表数组中。数组中的键是文件名的起始字母,列表中包含以该字母开头的所有名称。
示例:密钥'a‘可以包含a1、a2、a3、a4密钥'b’可以包含boat.txt、boast.txt、beast.txt
我已经准备好了文件扫描代码,但是对于如何在PHP中使用数组中的列表感到困惑。你能帮上忙吗?
谢谢!
发布于 2010-12-18 02:28:19
$first_char = substr($filename, 0, 1); // 'hello.doc' -> 'h'
$files[$first_char][] = $filename; // add $filename to the $files array under the 'h' key.发布于 2010-12-18 02:36:50
您需要遍历由read函数返回的列表。如果它是一个数组,你可以像这样迭代(否则,将你的字符串结果分解成一个数组并遍历)。您可以使用数组排序来按字母顺序排列数组。
<?php
$somelist = array("awesomeness", "stupidness", "funniness", "alotness", "lolz0rz", "sorryness");
$newlist = array();
foreach($somelist as $val)
{
$newlist[substr($val,0,1)][] = $val;
}
print "<pre>";
print_r($newlist);
print "</pre>";
?>发布于 2010-12-18 03:29:07
感谢所有帮助php新手的人:-)
这是我最终得到的结论:
$dirname = "./filesdir/";
$dh = opendir( $dirname ) or die("Couldn't open directory [".$dirname."]");
$arr = array();
while ( ! ( ( $file = readdir( $dh ) ) === false) )
{
if( $file != "." && $file != ".." )
{
if ( !is_dir("$dirname/$file" ) && substr_count($file, '.') == 1 )
{
$ext = strstr($file, '.', true);
$key = substr($ext,0,1);
if( $key < 'a' || $key > 'z' )
{
$key="other";
}
$arr[$key][] = $ext;
}
}
}
closedir( $dh );
print_r($arr);https://stackoverflow.com/questions/4473611
复制相似问题