PHP常用数组函数
explode()
:使用一个字符串分割另一个字符串,并返回由字符串组成的索引数组
$str = 'one----two----three----four';
// 返回包含一个元素的数组
print_r(explode('----',$str,0));
print "<br>";
// 数组元素为 2
print_r(explode('----',$str,2));
print "<br>";
// 删除最后一个数组元素
print_r(explode('----',$str,-1));
implode()
:将一个数组内的所有元素按照某个指定的规则,拼接成一个字符串
$arr = ['one','two','three','four'];
echo implode(" ",$arr)."<br>";
echo implode("----",$arr)."<br>";
echo implode("####",$arr)."<br>";
echo implode("X",$arr);
array_keys()
:获取一个数组的所有键名,返回一个索引数组
$arr = [3=>10, 9=> 20, 0 => 'html', 'id' => 'css', 20 => 20, 30];
print_r(array_keys($arr));
array_array_values()
:获取一个数组的所有值,返回一个索引数组,会将键名重置
$arr = [3=>10, 9=> 20, 0 => 'html', 'id' => 'css', 20 => 20, 30];
print_r(array_values($arr));
in_array($search, $arr)
: 检查某个元素是否存在于指定的数组中
$arr = [3=>10, 9=> 20, 0 => 'html', 'id' => 'css', 20 => 20, 30];
echo (in_array('html5', $arr) ? '存在' : '没有') . '<br>';
array_search($search, $arr)
: 搜索指定的值, 返回的是键名
echo $key = array_search('css', $arr);
array_unique($arr)
: 删除重复的值, “去重”函数
print_r( array_unique($arr));
count()
: 非数组返回1,是数组返回成员数量
$arr = [3=>10, 9=> 20, 0 => 'html', 'id' => 'css', 20 => 20, 30];
// $arr = 'aaa';
echo count($arr);
echo '<hr>';
array_count_values($arr)
: 统计数组中某个值的出现的频率
$arr = [3=>10, 9=> 20, 0 => 'html', 'id' => 'css', 20 => 20, 30];
$res = array_count_values($arr);
printf('<pre>%s</pre>', print_r($res,true));
array_sum()
:求和array_product()
:乘积
查询与替换
array_slice()
返回数组中的选定的部分内容
$a =['一年级','二年级','三年级','四年级','五年级'];
print_r(array_slice($a,0));
echo '<hr>';
// 获取前2个
print_r(array_slice($a, 0, 2));
echo '<hr>';
// 从第2个索引开始取3个
print_r(array_slice($a, 1, 3));
echo '<hr>';
// 第2个参数支持负数
print_r(array_slice($a, -3, 2));
array_splice()
:从数组中删除选定的元素,并用新元素取代它,可以实现对数组的替换\删除\添加\更新
$a =['一年级','二年级','三年级','四年级','五年级'];
// 删除元素
// array_splice($a, 起始索引, 删除数量), 返回的是被删除元素组成的数组
$res=array_splice($a, 1, 2);
printf('<pre>%s</pre><hr>', print_r($res, true));
// 替换功能
$res=array_splice($a, 1, 2, ['初一', '初二']);
// 添加
$res=array_splice($a, 1, 0, ['初一', '初二']);
// 负数
$res=array_splice($a, -3, 2, ['初一', '初二']);
printf('删除的元素: <pre>%s</pre><hr>', print_r($res, true));
printf('结果: <pre>%s</pre><hr>', print_r($a, true));
数组回调函数处理
array_filter()
: 用回调过滤数组中的单元,返回计算结果为true的元素组成的数组
$array = [0 => 'admin',1 => false,2 => 1,3 => null,4 => '',5 => '电脑',6 => '0'];
print_r(array_filter($array));
array_map()
: 为数组中的每个元素应用回调函数进行处理,返回新数组
$array = ['admin','三年级','电脑',['初一', '初二']];
$res = array_map(function($item){
// 将对象和数组拉平
switch (gettype($item)) {
case 'array':
$item = implode(', ', $item);
}
return $item;
}, $array);
printf('<pre>%s</pre><hr>', print_r($res, true));
array_reduce()
: 迭代处理数组元素
$key = ['用户名', '密码', '邮箱'];
$values = ['admin', 'abc123456', 'admin@php.com'];
$res = array_map(function($value1, $value2) {
return [$value1 => $value2];
}, $key, $values);
$res=array_reduce($res, function($prev, $current){
// 获取当前元素的键
$key = key($current);
// 获取当前元素的值
$value = current($current);
// 拼装成键值对
$prev[$key] = $value;
return $prev;
});
printf('内置的数组迭代:<pre>%s</pre><hr>', print_r($res, true));
总结
数组排序(对值排序):
sort($arr)
:升序
asort($arr)
:升序,但索引不变
rsort($arr)
:降序
arsort($arr)
:升序,但索引不变
explode()
:使用一个字符串分割另一个字符串,并返回由字符串组成的索引数组implode()
:将一个数组内的所有元素按照某个指定的规则,拼接成一个字符串array_slice()
返回数组中的选定的部分内容array_splice()
:从数组中删除选定的元素,并用新元素取代它,可以实现对数组的替换\删除\添加\更新array_combine($key, $values)
:两个数组合并,返回一个新数组