php排序数组和其他操作笔记

这次真的要写完数组了,说实在的要不是赶上双节,哪有这么高的学习速度….
最后是数组排序,合并,拆分,分解数组,以及其他数组常用的函数,其实大部分语言都是这样,所谓学习大部分时候是熟悉函数….
1.获得数组逆序的语句array_reverse语句。

$a=array("1","2","3","4","5","6","7","8","9");
print_r(array_reverse($a));

注意默认不保留键值的(键保留),可以启用第三个参数,写成array_reverse($a,true)即可

2.对调键与键值的array_flip语句,例如:

$a=array("1","2","3","4","5","6","7","8","9");
print_r(array_flip($a));

初始:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
对调后:
Array ( [1] => 0 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 [7] => 6 [8] => 7 [9] => 8 ) 

3.按指定形式排序数组的sort语句,形式为:sort(array,sorttype)
第二个参数:
* SORT_REGULAR – 默认。以它们原来的类型进行处理(不改变类型)。
* SORT_NUMERIC – 把值作为数字来处理
* SORT_STRING – 把值作为字符串来处理
* SORT_LOCALE_STRING – 把值作为字符串来处理,基于本地设置。
一般情况下只用默认就可以处理更多介绍自己查手册
(1)数字的例子:

$a=array("25","22","23",);
sort($a);
print_r($a);

返回:

Array ( [0] => 22 [1] => 23 [2] => 25 ) 

(2)字符串的例子(字符串是按照头一个字母或字符的ASCII值排序的):

$a=array("tom","jim","andy");
sort($a);
print_r($a);

返回

Array ( [0] => andy [1] => jim [2] => tom ) 

(3)以上默认是不保留键的,使用asort语句。
(4)逆序排列语句为rsort,同样保留键需要使用arsort语句,用法均相同
(5)另外使用语句可以自然排序,例如a1.doc、a9.doc、a3.doc,重新排序为:a1.doc、a3.doc、a9.doc
(6)ksort语句可以按键排序,同样的使用krsort可以逆序排列。
4.自定义规则排序的usort语句,这个东西咋看好难,直接写上书上的例子并注释就可以看清楚明白了。
例如排序美式日期:

$dates = array('10-10-2003','2-17-2002','2-16-2003','1-01-2005','10-10-2004');
function DateSort($a,$b){
//如果成立,什么也不执行
if($a == $b)return 0;
//使用explode以-为分隔拆开a与b
list($amonth,$aday,$ayear)=explode('-',$a);
list($bmonth,$bday,$byear)=explode("-",$b);
//给a与b的月份判断是否2位,如果不是通过str_pad在前面补零
$amonth = str_pad($amonth,2,"0",STR_PAD_LEFT);
$bmonth = str_pad($bmonth,2,"0",STR_PAD_LEFT);
//给a与b的日期判断是否2位,如果不是通过str_pad在前面补零
$aday = str_pad($aday,2,"0",STR_PAD_LEFT);
$bady = str_pad($bady,2,"0",STR_PAD_LEFT);
//重新为z,b组建没有-的日期例如2-17-2002,已被组建为20020217
$a = $ayear . $amonth . $aday;
$b = $byear . $bmonth . $bday;
//判断日期是否a>b,并输出1或-f,用于传递给usort
return($a > $b) ? 1 : -1;
}
//执行usort
usort($dates,'DateSort');
//成功输出
print_r($dates);

5.合并数组array_merge语句(返回数组)关于数字键与键(具体查手册)提示:array_merge_recursive

$a1=array("a"=>"Horse","b"=>"Dog");
$a2=array("c"=>"Cow","b"=>"Cat");
print_r(array_merge($a1,$a2));

输出:

Array ( [a] => Horse [b] => Cat [c][/c] => Cow )

6.递归追加数组array_combine语句,前一个为键后一个为值

$a1=array("a","b","c","d");
$a2=array("Cat","Dog","Horse","Cow");
print_r(array_combine($a1,$a2));

输出:

Array ( [a] => Cat [b] => Dog [c][/c] => Horse [d] => Cow )

7.array_slice在数组中根据条件取出一段值,并返回。(自查手册)
8.array_splice在数组指定一段位置,并返回被删除的值,也可以重新替换他们(具体查手册吧)
9.求关联数组的交集:array_intersect_assoc,数组的差集:array_diff,关联数组的差集:array_diff_assoc(自查手册)
10.随机返回一个或多个键,多值的话返回的是数组,返回一个例子:

$a=array("tom"=>"21","jim"=>"22","andy"=>"25","jack"=>"33");
echo array_rand($a);

多个

$a=array("tom"=>"21","jim"=>"22","andy"=>"25","jack"=>"33");
print_r(array_rand($a,2));

11.随机的重新排序,suffle语句

$a=array("1","2","3","4","5","6","7","8","9");
shuffle($a);
print_r($a);

结果可能是:

Array ( [0] => 3 [1] => 8 [2] => 5 [3] => 4 [4] => 6 [5] => 9 [6] => 2 [7] => 1 [8] => 7 ) 

12.求数组里数组值的和array_sum语句

$a=array("1","2","3","4","5","6","7","8","9");
echo array_sum($a);

13.分解数组,把数组按序分成指定数量的数组array_chunk,返回的是多维数组,就是数组里的数组…
例子分解a,每2个值组成新的数组并成为多维数组

$a=array("1","2","3","4","5","6","7","8","9");
print_r(array_chunk($a,2));

如果最后值的个数不足就剩几个输出几个

注意默认不保留键的,可以启用第三个参数,写成array_chunk($a,2,true)即可

终于写完了,其实这么仔细看数组没什么必要的,我只是为了熟悉php的函数的使用方法才仔细分析读了一遍


分享到: 更多



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>