一、数组的键值操作函数
• array_values(); //获取数组中的值
• array_keys(); //获取数组中的键
• in_array(); //检查一个值是否在数组中
• array_key_exists(); //检查一个键是否在数组中
• array_flip(); //键和值对调
• array_reverse(); //数组中的值反转
<?php
$arr=array(
'name' => 'zyd',
'age' => '19',
'sex' => 'female',
);
print_r(array_values($arr));//Array ( [0] => zyd [1] => 19 [2] => female )
print_r(array_keys($arr));//Array ( [0] => name [1] => age [2] => sex )
var_dump(in_array(3, $arr));//boolean false
var_dump(in_array('19', $arr));//boolean true
var_dump(array_key_exists(2, $arr));//boolean false
var_dump(array_key_exists('age', $arr));//boolean true
print_r(array_flip($arr));//Array ( [zyd] => name [19] => age [female] => sex )
print_r(array_reverse($arr));//Array ( [sex] => female [age] => 19 [name] => zyd )
?>
二、统计数组的元素和唯一性
• count(); //统计数组的个数
• array_count_values(); //统计数组中值出现的次数
• array_unique(); //删除数组中重复值
<?php
$arr=array(1,2,6,4,3,1,0,1,3,2);
print_r(count($arr));//10
print_r(array_count_values($arr));//Array ( [1] => 3 [2] => 2 [6] => 1 [4] => 1 [3] => 2 [0] => 1 )
print_r(array_unique($arr));// Array ( [0] => 1 [1] => 2 [2] => 6 [3] => 4 [4] => 3 [6] => 0 )
?>
三、使用回调函数处理数组的函数
• array_filter(); //将数组值为假的过滤
• array_map(); //将回调函数作用到给定数组的单元上
<?php
$arr = array(0,1,2,3,4);
function even($val){
return $val%2==0;
}
print_r(array_filter($arr));//Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 )过滤值为假元素
print_r(array_filter($arr,'even'));//Array ( [0] => 0 [2] => 2 [4] => 4 )过滤掉奇数元素
?>
-----------------------------------------------------------------------------------------
<?php
$arr = array(0,1,2,3,4);
$arr2 = array_map('cube', $arr);//将函数的作用映射到数组中生成新数组
function cube($val){
return $val*$val*$val;
}
print_r($arr2);//Array ( [0] => 0 [1] => 1 [2] => 8 [3] => 27 [4] => 64 )
?>
用引用实现原数组元素的各自累加
<?php
$arr = array(0,1,2,3,4);
foreach ($arr as &$value) {
$value++;
}
print_r($arr);//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
?>
四、数组的排序函数(都会改变原数组)
• sort(); //按值把数组值进行排序,升序,不保留key
• rsort(); //按值把数组值进行排序,降序,不保留key
• asort(); //按值把数组值进行排序,升序,保留key
• arsort(); //按值把数组值进行排序,降序,保留key
• ksort(); //按键把数组值进行排序,升序,保留key
• krsort(); //按键把数组值进行排序,降序,保留key
• natsort(); //字符串排序按自然数排序,每个从左往右按位依次比较排序
• natcasesort(); //忽略大小写的自然数排序
• array_multisort(); //用一个数组对另外一个数组进行排序
<?php
$arr = array(
'admin1'=>5,
'admin2'=>2,
'admin3'=>4,
'admin4'=>3,
'admin5'=>1,
);
asort($arr);
print_r($arr);
//Array ( [admin5] => 1 [admin2] => 2 [admin4] => 3 [admin3] => 4 [admin1] => 5 )
?>
---------------------------------------------------------------------------------
<?php
$arr = array(
5=>'admin1',
2=>'admin2',
4=>'admin3',
1=>'admin4',
3=>'admin5'
);
ksort($arr);
print_r($arr);
//Array ( [1] => admin4 [2] => admin2 [3] => admin5 [4] => admin3 [5] => admin1 )
?>
---------------------------------------------------------------------------------
<?php
$arr = array(
5=>'admin5',
2=>'admin2',
4=>'admin4',
6=>'admin6',
1=>'admin100'
);
natsort($arr);
print_r($arr);
//Array ( [2] => admin2 [4] => admin4 [5] => admin5 [6] => admin6 [1] => admin100 )
?>
------------------------------------------------------------------------------------
<?php
$arr=array(
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
'bbbbbbb',
'c',
'dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd'
);
foreach($arr as $val){
$arr2[]=strlen($val);//将数组元素的长度作为元素组成一个新的数组
}
array_multisort($arr2,SORT_DESC,$arr);//DESC降序,ASC升序
echo "<pre>";
print_r($arr);
echo "</pre>";
/*Array
(
[0] => dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
[1] => aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
[2] => bbbbbbb
[3] => c
)*/
?>
五、拆分、合并、分解与结合函数
• array_slice($arr,a,b); //截取一段值,从a开始截取b个元素
• array_splice(); //截取一段值,保留一段值作为原数组元素,原数组被改变
• array_combine(); //合并,一个是key,一个是value
• array_merge(); //并集,合并,键值相同,后面覆盖前面
• implode(); //把数组连接成字符串
• explode(); //把字符串分解成数组
<?php
$arr=array(1,2,4,3,5);
$arr2=array_slice($arr, 0,3);
$arr3=array_splice($arr,2, 4);
print_r($arr2);//Array ( [0] => 1 [1] => 2 [2] => 4 )
print_r($arr3);//Array ( [0] => 4 [1] => 3 [2] => 5 )
print_r($arr);//Array ( [0] => 1 [1] => 2 )
?>
---------------------------------------------------------------------------------
<?php
$arr1=array('name','age','sex');
$arr2=array('zyd','19','female');
$arr3=array_combine($arr1, $arr2);
$arr4=array_merge($arr1, $arr2);
print_r($arr3);//Array ( [name] => zyd [age] => 19 [sex] => female )
print_r($arr4);//Array ( [0] => name [1] => age [2] => sex [3] => zyd [4] => 19 [5] => female )
?>
----------------------------------------------------------------------------------
<?php
$arr1=array(1,2,3);
$str1=implode($arr1, '-');
echo $str1;//1-2-3
$str2='2020-09-17';
$arr2=explode('-', $str2);
print_r($arr2);//Array ( [0] => 2020 [1] => 09 [2] => 17 )
?>
六、数组与数据结构
• array_pop(); //从最后弹出一个值,返回弹出值,改变原数组
• array_push(); //从最后压入一个值,返回数组个数,改变原数组
• array_shift(); //从前面弹出一个值,返回移出值,原数组下标重排
• array_unshift(); //从前面插入一个值,返回数组个数
<?php
$arr1=array(1,2,3,4);
echo array_pop($arr1);//4
print_r($arr1);//Array ( [0] => 1 [1] => 2 [2] => 3 )
$arr2=array(0,2,4,6);
echo array_push($arr2, 8);//5
print_r($arr2);//Array ( [0] => 0 [1] => 2 [2] => 4 [3] => 6 [4] => 8 )
echo array_shift($arr1);//1
print_r($arr1);//Array ( [0] => 2 [1] => 3 )
echo array_unshift($arr2, 9);//6
print_r($arr2);//Array ( [0] => 9 [1] => 0 [2] => 2 [3] => 4 [4] => 6 [5] => 8 )
?>
七、其他有用的数组处理函数
• shuffle(); //打乱数组
• array_sum(); //数组所有值的和
• array_product(); //数组所有值的乘积
• range(); //获取一个范围内数组
<?php
$arr=array(1,3,2,5,6);
shuffle($arr);
print_r($arr);//Array ( [0] => 3 [1] => 5 [2] => 1 [3] => 2 [4] => 6 )随机,每次刷新顺序不同
echo array_sum($arr);//17
echo array_product($arr);//180
?>
----------------------------------------------------------------------------------------
<?php
$arr=range(1,10);
echo "<pre>";
print_r($arr);
echo "</pre>";
/*Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
[7] => 8
[8] => 9
[9] => 10
)*/
?>
删除变量或数组中某个元素:
<?php
$arr=array(1,2,3,4);
unset($arr);
$str="abc";
echo $str; //abc
unset($str);
echo "<pre>";
print_r($arr); //kong
echo "</pre>"; //kong
echo $str;
?>