数组的排序, 数组的合并, 数组成员的统计, 数组的交差并补等,任意选一个专题,至少10个函数,写出演示案例并提交到博客中
<?php
// natsort ( array &$array ) : bool 成功时返回 true, 或者在失败时返回 false。
//自然排序发
$negative = array('-5','3','-2','0','-1000','9','1');
natsort($negative);
print_r($negative);
echo "<br>";
// asort — 对数组进行排序并保持索引关系
// asort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
// 本函数对数组进行排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
echo "<hr>";
// sort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
// 本函数对数组进行排序。 当本函数结束时数组单元将被从最低到最高重新安排。
// 如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
// SORT_REGULAR - 正常比较单元 详细描述参见 比较运算符 章节
// SORT_NUMERIC - 单元被作为数字来比较
// SORT_STRING - 单元被作为字符串来比较
// SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变。
// SORT_NATURAL - 和 natsort() 类似对每个单元以“自然的顺序”对字符串进行排序。
// SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。
$arr2=['-56','3','-3','0','1000','99','1','a'];
// SORT_REGULAR - 正常比较单元
sort ($arr2);
print_r($arr2);
echo "<br>";
// SORT_NUMERIC 注意字符转化成数字时候全变成0;
$arr2=['-56','3','-3','0','1000','99','1','a'];
sort ($arr2,SORT_NUMERIC);
print_r($arr2);
echo "<br>";
$arr2=['-56','3','-8','0','-1000','9','11',];
sort ($arr2,SORT_STRING);
print_r($arr2);
echo "<br>";
$arr2=['-56','3','-8','0','-1000','9','1',];
//会改变键的位置值
sort ($arr2,SORT_NATURAL);
print_r($arr2);
echo "<br>";
//SORT_FLAG_CASE区分大小写
$arr = ['a', 'A','-500','-6000','3','11'];
//SORT_FLAG_CASE | SORT_STRING 不区分大小写
sort($arr, SORT_FLAG_CASE | SORT_STRING);
print_r($arr);
echo "<hr>";
// array_multisort 对多个或对维数组进行排序
// array_multisort ( array &$array1 , mixed $array1_sort_order = SORT_ASC , mixed $array1_sort_flags = SORT_REGULAR , mixed $... = ? ) : bool
//... 可选的选项,可提供更多数组,跟随在 sort order 和 sort flag 之后。 提供的数组和之前的数组要有相同数量的元素。 换言之,排序是按字典顺序排列的。
//多维数组排序数组的数量保持一致,在实际中用处不大,是根据一维数组的顺序进行排序的
//建议:单独使用期进行排序,数组索引会改变
$mutiarray=[16,-2,4,0,-1000];
$mutiarray1=['key1'=>'abc','key2'=>'acd','1c','789','mbq'];
print_r($mutiarray);
print_r($mutiarray1);
echo "<br>";
array_multisort($mutiarray,SORT_ASC, SORT_STRING,$mutiarray1,SORT_NUMERIC, SORT_ASC);
echo "<br>";
echo print_r($mutiarray,true);
echo "<br>";
echo print_r($mutiarray1,true);
echo "<br>";
$mutiarray1=['key1'=>'abc','key2'=>'acd','1c','789','mbq'];
array_multisort($mutiarray1,SORT_NUMERIC, SORT_ASC);
echo print_r($mutiarray1,true);
echo "<hr>";
// natcasesort ( array &$array ) : bool
// natcasesort() 是 natsort() 函数的不区分大小写字母的版本。 键值维持不变
$text=['k'=>'abc.text','k1'=>'ABC.text','abc10.text','abc11.text','abc1.text'];
natcasesort($text);
print_r($text);
echo "<hr>";
// asort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
//asort — 对数组进行排序并保持索引关系
//sort_flags可以用可选的参数 sort_flags 改变排序的行为,详情见 sort()。
$color=Array('red','blue','green','yellow','cyan','orange','lightblue','violet');
asort($color);
print_r($color);
echo "<hr>";
// ksort — 对数组按照键名排序
// ksort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
$ks=['a'=>'dir','b'=>'aside','c'=>'beside','d'=>'current','e'=>'form','f'=>'eat'];
ksort($ks);
foreach($ks as $k=>$v){
echo "<pre></pre>";
echo $k,'=>',$v;
}
echo "<hr>";
// uksort : 使用用户自定义的比较函数对数组中的键名进行排序
// uksort ( array &$array , callable $key_compare_func ) : bool
//会改变数组的键值,排序完成后数组的键值变成了数字
function comp($s1,$s2){
$s1=preg_replace('#\d#','***',$s1);
$s1=preg_replace('#\d#','***',$s1);
return strcasecmp($s1,$s2);
}
$ks=['p'=>'dir','b'=>'aside','g'=>'beside','l'=>'current','a'=>'form','f'=>'eat'];
uksort($ks,'comp');
print_r($ks);
echo "<hr>";
//usort — 使用用户自定义的比较函数对数组中的值进行排序
//usort ( array &$array , callable $value_compare_func ) : bool
//本函数将用用户自定义的比较函数对一个数组中的值进行排序。 如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数。
$ks=['a'=>'dir','j'=>'aside','c'=>'beside','f'=>'current','e'=>'form','p'=>'eat'];
usort($ks,'comp');
print_r($ks);
echo "<hr>";
// uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
// uasort ( array &$array , callable $value_compare_func ) : bool
// 如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的。
$ks=['a'=>'dir','j'=>'aside','c'=>'beside','f'=>'current','e'=>'form','p'=>'eat'];
uasort($ks,'comp');
print_r($ks);
echo "<hr>";
// arsort — 对数组进行逆向排序并保持索引关系
// arsort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
// 本函数对数组进行排序,数组的索引保持和单元的关联。
$arr2=['-56','3','-3','0','1000','99','1','a'];
arsort ($arr2,SORT_NUMERIC);
print_r($arr2);
echo "<hr>";
$fr= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fr);
echo print_r($fr,true);
echo "<hr>";
// krsort — 对数组按照键名逆向排序
// krsort ( array &$array , int $sort_flags = SORT_REGULAR ) : bool
// 对数组按照键名逆向排序,保留键名到数据的关联。主要用于结合数组。
$fr= array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
krsort($fr);
echo print_r($fr,true);
echo "<hr>";
// array_reverse — 返回单元顺序相反的数组
// array_reverse ( array $array , bool $preserve_keys = false ) : array
// $preserve_key如果设置为 true 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。
$inavlue=['id'=>'779','name'=>'zhanhsan','salary'=>9000,100,200];
$a=array_reverse($inavlue,true);
print_r($a);
echo '<br>';
foreach($a as $k=>$v){
echo $k,'=>',$v;
echo "<pre></pre>";
}
?>
效果: