PHP常用数组函数
数组指针函数
PHP 数组中有一个东西叫指针,默认指向数组第一个元素。
key($数组); 获取当前指针指向元素的下标。
current($数组); 获取当前指针指向元素的值。
//获取数组键名和键值
$arr = [
'name' => '哈哈哈',
'age' => '18'
];
$key = key($arr); // 键
$value = current($arr); // 值
var_dump($key);
var_dump($value);
next($数组); 将指针向后移动一个位置(下一个值),并输出。
prev($数组); 将指针向前移动一个位置(上一个值),并输出。
- ps:当函数移动成功的时候,他会返回移动后的元素的值,如果指针超出数组元素范围,next(),prev()返回布尔值false。
end($数组); 将指针移动最后一个位置(最后一个值),并输出。
reset($数组); 将指针移动到第一个位置(第一个值); 重置数组,并输出。
//指针遍历数组
$arr = [
'name' => '哈哈哈',
'age' => 18,
'sex' => 'man'
];
do {
$key = key($arr);
$val = current($arr);
var_dump($key);
var_dump($val);
} while(next($arr);
reset($arr); //重置指针
数组的键和值操作函数
array_values(),函数返回包含数组中所有的值的数组。被返回的数组将使用数值键,从 0 开始且以 1 递增。
$arr1 = [
'name' => '路飞',
'age' => 18,
'len' => 171,
];
// 获取$arr的所有值,并作为数组赋值给$res
$res = array_values($arr1);
var_dump($res);
array_keys(),函数返回包含数组中所有键名的一个新数组。
in_array(),检查数组是否含有某个值,有返回布尔值true,否则返false
//in_array(值, 数组) 返回的结果是布尔值
//检查数组$arr是否含有字符串正义联盟,并把返回结果赋值给$res
$res = in_array('正义联盟', $arr);
var_dump($res);
array_flip(),交换数组的键名和键值。
//自定义函数版本array_flip()
function fz($arr){
end($arr);
$succes = [];
do{
$succes[key($arr)] = current($arr);
}while(prev($arr));
return $succes;
}
array_reverse(),把数组元素顺序倒过来。
//自定义函数版本array_reverse()
function fz($arr){
end($arr);
$succes = [];
do{
$succes[key($arr)] = current($arr);
}while(prev($arr));
return $succes;
}
统计数组元素的个数和唯一性函数
count()
- count(数组) 统计数组中的单元(值, 键值对)数量
array_count_values
- array_count_values(数组) 统计数组每个值出现的次数
- 结果会以$arr数组的值作为下标, 出现的次数作为结果的值
array_unique()
- array_unique(数组) 去除数组中的重复值
- 结果是一个数组, 去除重复值后的数组
数组回调处理函数
array_filter()
- array_filter(数组, 回调函数);
- 使用回调函数过滤数组中元素(单元、键值对)。
- 回调函数可以不写, 如果不写的话默认过滤掉判断为false; null ,false, array() ,0, '0' ,'' 。
- 如果写了回调函数, 则根据回调函数的返回值来确定是否过滤数据,如果回调函数返回true则不过滤 false 则过滤。
$arr = [
0,
false,
10,
20
];
// 不写回调函数的时候
$res = array_filter($arr);
var_dump($res);
// 当我们写回调函数的时候
// 回调函数的作用就是自定义过滤条件
$res = array_filter($arr, function($val){
if ($val > 10) {
return true;
}
return false;
});
var_dump($res);
array_walk()
- array_walk(&数组, 回调函数, 自定义参数可选);
- 将数组中每个值都传递给回调函数进行回调。
- 通常用于格式化内容并输出。
arr2 = [
10,
20,
30,
40,
50,
60
];
// 把数组中的每一个数字乘以自己的 格式化
array_walk($arr2, function(&$val, $key, $userdata){
$val = $userdata . ($val * $val);
}, '这里写自定义函数');
var_dump($arr2);
array_map()
- 功能与array_walk()类似,将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
- 但不会影响原数组,通常用于格式化内容但不输出,可把结果赋给新数组。
function cube($n)
{
return ($n * $n * $n); // 结果会改变数组的内容, 不会改变原有数组
}
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($a);
print_r($b);

浙公网安备 33010602011771号