首页 > 编程语言 > 详细

PHP常用数组函数

时间:2020-03-27 09:55:57      阅读:53      评论:0      收藏:0      [点我收藏+]

数组指针函数

? 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);

PHP常用数组函数

原文:https://www.cnblogs.com/zylm/p/12579083.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!