PHP基础:数组函数
1.数组函数之数组的分割与合并
// (1)array_chunk 将一个数组分割成多个
$arr=array('id'=>'1','name'=>'baoyu','age'=>30,'sex'=>'man');
echo '将一个数组分割为多个数组,每个数组包含2个键值对<br>';
printf('返回索引数组<pre>%s</pre>',print_r(array_chunk($arr,2),true));
printf('返回关联数组<pre>%s</pre>',print_r(array_chunk($arr,2,true),true));
echo '<hr>';
// (2)array_merge 合并一个或多个数组
// 如存在相同键名,则后面数组的值会覆盖前面数组的值,索引键名不覆盖
$arr1=['id'=>'101',1,2,3];
$arr2=['name'=>'baoyu',4,5,'a'];
$arr3=['id'=>'103',7,8,'b'];
$arrs=array_merge($arr1,$arr2,$arr3);
printf('合并后的数组:<pre>%s</pre>',print_r($arrs,true));
echo '<hr>';
2.数组函数之检查与获取
// (3)array_column 返回数组中指定的一列
$arr=[['id'=>'101','name'=>'baoyu','age'=>30,'sex'=>'man'],
['id'=>'102','name'=>'zhangyi','age'=>32,'sex'=>'woman'],
['id'=>'103','name'=>'lishan','age'=>31,'sex'=>'man']];
printf('返回数组中的name列的值,键名为id<pre>%s</pre>',print_r(array_column($arr,'name','id'),true));
echo '<hr>';
// (4)array_key_exists 检查数组里是否有指定的键名或索引
$arr=['id'=>'101','name'=>'baoyu','age'=>30,'sex'=>'man'];
if(array_key_exists('name',$arr)){
echo '数组中包含name这个键名<br>';
};
// (5)array_key_first 获取数组的第一个键名
echo '返回数组中的第一个键名是:',array_key_first($arr),'<br>';
// (6)array_key_last 获取数组的最后一个键名
echo '返回数组中的最后一个键名是:',array_key_last($arr),'<br>';
// (7)array_keys 返回数组中部分的或所有的键名
printf('返回数组中所有的键名:%s',print_r(array_keys($arr),true));
echo '<hr>';
3.数组函数之排序
// (8)array_multisort 对多个数组或多维数组进行排序
$arrs=['number'=>[101,20,30,50],
10=>[102,'name'=>'zhangyi',32,'sex'=>'woman'],
'string'=>['103','name'=>'lishan','31','sex'=>'man']];
$arr1=[6,3,8];
array_multisort($arrs['number'],SORT_NUMERIC,SORT_ASC,$arrs[10],SORT_STRING,SORT_DESC,$arrs['string'],SORT_NATURAL,SORT_ASC);
printf('数组多维排序:<pre>%s</pre>',print_r($arrs,true));
array_multisort($arrs,SORT_FLAG_CASE);//
printf('数组单维排序:<pre>%s</pre>',print_r($arrs,true));
echo '<hr>';
3.数组函数之差集
// (9)array_diff 计算数组的差集
$arr1=[1,2,3,4];
$arr2=[3,4,5,6];
$arr3=[5,6,7,8];
$arrs=array_diff($arr1,$arr2,$arr3);
printf('返回第1个数组与其他数组的值差集:<pre>%s</pre>',print_r($arrs,true));
echo '<hr>';
// (10)array_diff_key 使用键名比较计算数组的差集
$arr1=['id'=>'101','name'=>'baoyu','age'=>30,'sex'=>'man'];
$arr2=['name'=>'baoyu','job'=>'admin'];
$arr3=['id'=>'101','tel'=>'18912345678'];
$arrs=array_diff_key($arr1,$arr2,$arr3);
printf('返回第1个数组与其他数组的键差集:<pre>%s</pre>',print_r($arrs,true));
3.数组函数之取出与移除
// (11)array_slice 从数组中取出一段
$arr=[1,2,3,4,5,6,7,8,9,10];
$outarr=array_slice($arr,2,4);
printf('从第3个位置开始取出4个元素:<pre>%s</pre>',print_r($outarr,true));
$outarr=array_slice($arr,-3);
printf('取出从倒数第3至最后的元素:<pre>%s</pre>',print_r($outarr,true));
$outarr=array_slice($arr,-6,-4);
printf('取出从倒数第6至倒数第4之间的元素:<pre>%s</pre>',print_r($outarr,true));
// (12)array_splice 去掉数组中的某一部分并用其它值取代
$arr=[1,2,3,4,5,6,7,8,9,10];
$outarr=array_splice($arr,2,4,[101,102,103,104]);
printf('从第3个位置开始被移除的4个元素:<pre>%s</pre>',print_r($outarr,true));
printf('被替换后的数组:<pre>%s</pre>',print_r($arr,true));
$outarr=array_splice($arr,-3,-2,'201');
printf('将倒数第3个元素替换为201:<pre>%s</pre>',print_r($arr,true));
$outarr=array_splice($arr,-5,-2);
printf('移除从倒数第5至倒数第2之间的元素:<pre>%s</pre>',print_r($arr,true));