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 ...
展开
 我来答
wozuijiangchen
2012-08-11 · 超过35用户采纳过TA的回答
知道答主
回答量:132
采纳率:0%
帮助的人:80.9万
展开全部
在这里办法由很多,你可以用php中的sort()直接排序得到的排序结果就是你要的,如果不用函数的话
最简单的办法就是:
foreach($array as $value){
$newarray[]=$value;
}
然后将$array=$nearray 就得到按顺序排列的$array了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SupremeKai
2012-08-09 · TA获得超过6248个赞
知道大有可为答主
回答量:1520
采纳率:33%
帮助的人:1396万
展开全部
说一下原因,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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
miniappNahxiMfOD8z2q
2012-08-10 · 超过25用户采纳过TA的回答
知道小有建树答主
回答量:80
采纳率:0%
帮助的人:39.7万
展开全部
php自带函数按key排序
ksort($array);

参考资料: http://cn.php.net/ksort

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式