最近遇到这样一个问题,在一个文件夹里面放了300多张图片,都是以1-300.jpg命名的,中间可能缺少几张比如13.jpg
56.jpg等等
但是用PHP循环获取图片名,写这样的代码
$od=opendir("../pictures");
while($filename=readdir($od))
{
if($filename != "." && $filename != "..")
{
eho $filename." ";
}
}
输出的结果却是这样的:1.jpg 10.jpg 100.jpg 101.jpg 102.jpg 103.jpg 104.jpg ... 109.jpg 11.jpg 110.jpg
111.jpg 112.jpg ... 119.jpg 12.jpg 120.jpg
所以我就把这些文件的编号存入数组,希望将数组重新排序,请大家帮忙完善代码
$od=opendir("../pictures");
while($filename=readdir($od))
{
if($filename != "." && $filename != "..")
{
$key=str_replace(".jpg","",$filename);
$array[$key]=$filename;//获得数组
}
}
/*
将数组重新排序(这段代码请大家帮忙写)
*/
for($i=0;$i<count($array);$i++)
{
echo $array[$i]." ";
}
注意1--300中可能缺少13.jpg,56.jpg,79.jpg等图片,要求输出的结果1.jpg 2.jpg 3.jpg ... 10.jpg 11.jpg 12.jpg 14.jpg 15.jpg ...
最简单的办法就是:
foreach($array as $value){
$newarray[]=$value;
}
然后将$array=$nearray 就得到按顺序排列的$array了本回答被提问者采纳
你只需对返回值做一下类型转换,转成整形
$key = intvla( str_replace( ".jpg", "", $filename ) );
在遍历时使用 foreach 而不是 for 就可以跳过缺掉的数组元素
比如:
$names = array();
$names[0] = 'Kay';
$names[2] = 'Mary';
$names[3] = 'Kissy';
foreach($names as $value) {
echo $value;
}
//结果:KayMaryKissy本回答被网友采纳
ksort($array);
参考资料: