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 ...

第1个回答  2012-08-11
在这里办法由很多,你可以用php中的sort()直接排序得到的排序结果就是你要的,如果不用函数的话
最简单的办法就是:
foreach($array as $value){
$newarray[]=$value;
}
然后将$array=$nearray 就得到按顺序排列的$array了本回答被提问者采纳
第2个回答  2012-08-09
说一下原因,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本回答被网友采纳
第3个回答  2012-08-10
php自带函数按key排序
ksort($array);

参考资料:

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网