PHP数组重新排序
最近遇到这样一个问题,在一个文件夹里面放了300多张图片,都是以1-300.jpg命名的,中间可能缺少几张比如13.jpg56.jpg等等但是用PHP循环获取图片名,写这...
最近遇到这样一个问题,在一个文件夹里面放了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 ... 展开
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 ... 展开
3个回答
展开全部
在这里办法由很多,你可以用php中的sort()直接排序得到的排序结果就是你要的,如果不用函数的话
最简单的办法就是:
foreach($array as $value){
$newarray[]=$value;
}
然后将$array=$nearray 就得到按顺序排列的$array了
最简单的办法就是:
foreach($array as $value){
$newarray[]=$value;
}
然后将$array=$nearray 就得到按顺序排列的$array了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
说一下原因,str_replace返回的是字符串类型,所以数组的下标其实是字符串,而不是数字索引。
你只需对返回值做一下类型转换,转成整形
$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
你只需对返回值做一下类型转换,转成整形
$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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询