PHP 数组函数
- 1.获取数组的键名:
array_keys($arr)
函数返回键名组成的索引数组
- 2.获取数组的第一个键名:
array_key_first($arr)
函数返回数组中的第一个键名
- 3.获取数组的最后一个键名:
array_key_last($arr)
函数返回数组中的最后一个键名
- 4.判断某个键名是否在数组中:
array_key_exists('id', $arr)
存在函数返回 true 不存在返回 false
- 5.获取数组的值:
array_values($arr)
函数返回数组的值组成的索引数组
- 6.判断某值是否在数组中:
in_array('OPPO', $arr)
存在函数返回 true 不存在返回 false
- 7.判断某值是否在数组中,并返回其键名:
array_search('OPPO', $arr)
存在函数返回键名 不存在返回 false
- 8.删除数组中重复的值:
array_unique($arr)
函数返回一个被删除了重复值的数组
- 9.数组的值相加求和:
array_sum($arr)
函数返回相加求和结果
- 10.数组的值相乘求积:
array_product($arr)
函数返回相乘求积结果
- 11.数组按值升序排列:
sort($arr)
函数直接对原数组进行按值升序排序 数组键名会重置asort($arr)
函数直接对原数组进行按值升序排序 数组键名保留
- 12.数组按键排列:
ksort($arr)
函数直接对原数组进行按键升序排列krsort($arr)
函数直接对原数组进行按键降序排列
13.自定义排序:利用回调函数自定义排序方法
usort($arr,function(){})
函数直接对原数组按值进行用户指定的排序 不保留原数组键名uasort($arr, function(){})
函数直接对原数组按值进行用户指定的排列 保留原数组键名uksort($arr,function(){})
函数直接对原数组按键进行用户指定的排序- 例:
<?php
$arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
usort($arr, function($val){
return ($val < 50)?1:-1; //值小于50的往后排列
});
print_r($arr);
echo '<hr>';
$arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
uasort($arr, function($val){
return ($val < 50)?1:-1; //值小于50的往后排列
});
print_r($arr);
echo '<hr>';
$arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
uksort($arr, function($k1, $k2){
return ($k1 - $k2); //按键名从小到大排列
});
print_r($arr);
echo '<hr>';
- 14.自然排序:数字从 1 到 9 的排序方法 字母从 a 到 z 的排序方法 短者优先
natsort($arr)
函数直接对原数组进行自然排序
- 15.从数组中取出一部分:
rray_slice($arr, 起始位置, 取出个数)
函数返回取出的指定部分形成的数组
- 16.数组的增删改:
array_splice($arr, 起始位置, 删除个数, 要替换的数组)
- 函数返回被删除的元素组成的数组 改动后的数组保存在原数组中
- 例:
<?php
$arr = [1=>88, 0=>78, 3=>98, 8=>28, 6=>38];
$res = array_splice($arr, 1, 0, ['增', '加']); //增加两个元素
print_r($res);
print_r($arr);
echo '<hr>';
$res = array_splice($arr, 1, 2); //删除前面增加的部分
print_r($res);
print_r($arr);
echo '<hr>';
$res = array_splice($arr, 1, 2, ['修', '改']); //修改部分元素
print_r($res);
print_r($arr);
echo '<hr>';
- 17.数组合并:
array_combine($key,$value)
函数将两个数组合并成新的数组- 若合并成功 则前一个数组为新数组的键 后一个数组为新数组的值,若不成功 则返回 false
array_merge($key, $value, [100,200])
函数将多个数组合并成一个新的数组 函数返回合并后的新数组- 例:
<?php
$key = ['id', 'name', 'password'];
$value = [100, 'root', 'root'];
$res = array_combine($key,$value);
print_r($res);
echo '<hr>';
$res = array_merge($key, $value, [100,200]);
print_r($res);
- 18.数组与回调函数:
- 1.用回调函数过滤数组中的元素:
array_filter($arr, function(){})
函数返回通过回调函数返回值为 true 的数组 其键名与原数组键名相同
- 2.对数组中的每个元素都进行一次回调函数处理:
array_map(function(){}, $arr)
函数返回经回调函数处理之后的新数组
- 例:
<?php
$arr = ['id', 100, 'name', 'root', 'password', 'root', 200];
$res = array_filter($arr, function($val){
return is_string($val)?$val:false;
});
print_r($res);
echo '<hr>';
$res = array_map(function($val){
return is_numeric($val)?0:$val;
},$arr);
print_r($res);
- 1.用回调函数过滤数组中的元素:
19.关联数组与变量:
extract($arr)
函数将关联数组转为一组变量 执行之后可以直接使用关联数组的键名访问变量compact('var1', 'var2', ...)
函数将一组变量转为关联数组 函数返回一组关联数组 变量名为键名 变量值为数组的值- 例:
<?php
$arr = ['brand'=>'xiaomi', 'model'=>'mix2s', 'price'=>3299];
extract($arr);
echo $brand,'--',$model,'--',$price;
echo '<hr>';
$res = compact('brand', 'model', 'price');
print_r($res);
PHP 栈与队列
栈:先进后出的数据结构
- 只在数组的头部或者尾部进行增删元素的操作
队列:先进先出的数据结构
- 对数组元素一头进行增在另一头进行删的操作
array_unshift()
在数组开头插入一个或多个数据array_shift()
在数组头部删除一个或多个数据array_push()
在数据尾部插入一个或多个数据arrsy_pop()
在数据尾部删除一个或多个数据- 例:
<?php
$stack = [];
//在stack数组的头部进行增删数据
array_unshift($stack, 1);
array_unshift($stack, 2);
array_unshift($stack, 3);
print_r($stack);
echo array_shift($stack);
echo array_shift($stack);
echo array_shift($stack);
echo '<hr>';
$stack = [];
//在stack数组的尾部进行增删数据
array_push($stack, 1);
array_push($stack, 2);
array_push($stack, 3);
print_r($stack);
echo array_pop($stack);
echo array_pop($stack);
echo array_pop($stack);
echo '<hr>';
$queue = [];
//在queue数组的头部进行增加数据 尾部进行删除数据
array_unshift($queue, 1);
array_unshift($queue, 2);
array_unshift($queue, 3);
print_r($queue);
echo array_pop($queue);
echo array_pop($queue);
echo array_pop($queue);
echo '<hr>';
//在queue数组的尾部进行增加数据 头部进行删除数据
array_push($queue, 1);
array_push($queue, 2);
array_push($queue, 3);
print_r($queue);
echo array_shift($queue);
echo array_shift($queue);
echo array_shift($queue);