0713作业
php数组常用函数
1. array_keys()
:获取数组中的所有键名,并返回一个新的数组
<?php
$arr = ["lat" => 23.2215, "lng" => 123.123, '省市' => '广东'];
print_r(array_keys($arr));
2. array_key_exists()
检索给定的键名是否存在数组中,返回布尔值
`array_key_exists(“target”,$arr)
<?php
$arr = ["lat" => 23.2215, "lng" => 123.123, '省市' => '广东'];
echo array_key_exists('lat', $arr) ? '成功' : '请输入正确的lat';
3. array_key_first()
/array_key_last()
返回数组中第一个元素/最后一个的键名,用于数组较大的情况
<?php
$arr = ["lat" => 23.2215, "lng" => 123.123, '省市' => '广东'];
echo array_key_first($arr), '<hr>';
echo array_key_last($arr);
4. array_values()
获取数组所有的值(返回的是一个索引数组)
<?php
$arr = ["lat" => 23.2215, "lng" => 123.123, 'province' => '广东', 'city' => '佛山', "code" => 1];
print_r(array_values($arr));
echo '<hr>';
array_search():找到了返回元素值对应的键名,找不到返回false
arrar_unique():删除重复值
5. array_sum()/array_product 数组内的数组相加/相乘,字符串会被转换为整数(直到第一个遇见的非数字字符,非数字字符后面如果有数字的也不参加了)
<?php
$arr2 = [1, 2, 3, 4, '5dd6'];
echo array_sum($arr2);
//数组内的数组相加,字符串会被转换为整数,
echo "
";
echo array_product($arr2);
栈与队列
- 栈:后进先出(LIFO-last in first out):最后插入的元素最先出来
- 栈的插入操作array_push()叫做进栈,删除操作array_pop()叫做出栈。
6. 栈与队列
函数 | 功能 |
---|---|
array_push() |
将一个或多个元素压入数组栈的末尾(入栈),返回入栈元素的个数; |
array_pop() |
删除数组中的最后一个元素,出栈,返回删除的元素值,当没有元素时,则返回null。 |
array_unshift() |
向数组插入新元素。新数组的值将被插入到数组的开头,队操作 |
array_shift() |
删除数组中的第一个元素,并返回被删除元素的值,队操作 |
<?php
//栈与队列
//栈是添加与删除受限的一种数据结构,数据的增删仅允许在一端进行,LIFO,最后进先出
$arr = [];
//array_push:向数组尾部插入一个或多个元素,返回值是数组的长度
echo '入栈:' . array_push($arr, 1, 3, 5);
print_r($arr);
echo '<hr>';
//array_pop():函数用来删除数组末尾的元素(出栈)返回值是删除的值
echo '出栈pop:' . array_pop($arr);
echo '<hr>';
echo '出栈pop:' . array_pop($arr);
echo '<hr>';
echo '出栈pop:' . array_pop($arr);
echo '<hr>';
echo '出栈pop没有了会弹出:', var_dump(array_pop($arr));
echo '<hr>';
//队列:先进先出
//array_unshift():函数用于向数组插入新元素。新数组的值将被插入到数组的开头
echo '在头部array_unshift新增元素:' . array_unshift($arr, 2, 4, 6) . '';
print_r($arr);
echo '<hr>';
echo '在队的头部array_shift删除元素:' . array_shift($arr);
echo '<hr>';
echo '在队的头部array_shift删除元素:' . array_shift($arr);
echo '<hr>';
echo '在队的头部array_shift删除元素:' . array_shift($arr);
//array_shift():删除数组中的第一个元素,并返回被删除元素的值
7. 数组排序
函数 | 功能 |
---|---|
sort() |
升序排列,键名重新生成 |
asort() |
按照值进行升序排列,键名不会重新生成 |
ksort() |
按键名进行升序排列 |
krsort() |
按键名进行降序排列 |
usort() |
自定义排序 usort(数组名,回调函数),回调中可以操作数组后再返回 |
natsort() |
自然排序 |
- php中的sort()将字符自动转换为零,会排在数字时代前面
<?php
$model = ["lat" => 23.2215, "lng" => 123.123, 'province' => '广东', 'city' => '佛山', "code" => 1];
print_r($model);
echo "<hr>";
$arr=$model;
sort($arr);
print_r($arr);
echo "<hr>";
// 按照值进行升序排列,键名不会重新生成
$brr=$model;
asort($brr);
print_r($brr);
echo "<hr>";
// 按键名进行升序排列
$crr=$model;
ksort($crr);
// 按键名进行升序排列
print_r($crr);
krsort($crr);
echo "<hr>";
// 按键名进行降序排列
print_r($crr);
echo "<hr>";
<?php
echo "原始数组:";
$pics = ['pic5.jpg', 'pic8.jpg', 'pic12.jpg', 'pic9.jpg','pic1.jpg'];
print_r($pics);
echo "<hr>";
//普通数组排序
sort($pics);
print_r($pics);
echo "<hr>";
// 用natsort()自然算法对数组排序
natsort($pics);
print_r($pics);
8. array_slice()
:从数组中取出一部分元素,不影响原始数组
- array_slice(数组,起始位置,取的个数)
- 第三个参数不设置默认截取到末尾
- 支持负数从后往前数取数据
<?php
$model = ["lat" => 23.2215, "lng" => 123.123, 'province' => '广东', 'city' => '佛山', "code" => 1];
print_r($model);
echo "<hr>";
$res = array_slice($model,1,2);
print_r($res);
echo "<hr>";
$res = array_slice($model,-3,2);
print_r($res);
9. array_splice()
:从数组中移除并返回指定的元素组成的数组,实现增删改
- 删除:
array_splice(要操作的数组, 从什么位置开始操作 , 操作几个)
- 替换:
array_splice(要操作的数组, 从什么位置开始操作 , 操作几个 ,[替换的元素])
- 新增:
array_splice(要操作的数组, 从什么位置开始操作 , 0,[替换的元素])
第三个参数设0就不删只增 - 返回结果是被删除或者被替换的元素组成的数组
- 操作会影响原始数组
<?php
$arr = [1,2,3,4,5,6,7,8,9,10];
print_r($arr);
echo "<hr>";
//删除
//array_splice(要操作的数组,从什么位置开始操作,操作几个)
//返回结果是被删除元素组成的数组
$res = array_splice($arr,1,2);
print_r($res);
echo "<hr>";
//操作影响原始数组
print_r($arr);
//替换
echo "<hr>";
$res = array_splice($arr,1,2,[400,500]);
print_r($res);
echo "<hr>";
print_r($arr);
10. array_combine()
:合并数组
<?php
$arr = ['力量','敏捷','智力','体能'];
$value = [120,230,340,450];
$res = array_combine($arr,$value);
print_r($res);
11.array_merge()
函数用于把一个或多个数组合并为一个数组,键名相同会覆盖
<?php
$arr = ['力量'=>120,'敏捷'=>230,'智力'=>340,'体能'=>450];
$value = ['力量'=>12000,'敏捷'=>230000,'内息'=>50000];
$res = array_merge($arr,$value);
//键名相同会覆盖,array_merge($arr,$value)后面的覆盖前面的
print_r($res);
12. array_filter()
只返回元素可以转为true的元素
<?php
$arr = [10,'string_php','1',true,[4,5,6],(new class{}),'0',0,false,null,'',[]];
//array_filter() 只返回元素可以转为true的元素
$result = array_filter($arr);
print_r($result);
// '0', 0,false, null,'',[]: 转为false
13. array_map()
为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
<?php
//array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组
$arr = ['username',[1,2,3],(new class{public $name = 'admin';public $age = 18;}),100];
$res = array_map(function($item){
// 示例:如果数组元素是对象,则输出它的属性,如果是数组,则转为字符串,否则直接输出
switch (gettype($item)){
case 'object':
$item = get_object_vars($item);
$item = implode(',',$item);
break;
case 'array':
$item = implode(',',$item);
}
return $item;
},$arr);
print_r($res);
14. extract()
将关联数组拆分为变量!!!!!
- extract()将关联数组拆分为变量,拆分后变量名即为关联的键名,一次性批量完成,无需一个个创建
- 应用场景如表单提交等过来的数组解析为一个个变量以便处理
<?php
//extract():将关联数组拆分为变量
$config = ['type'=>'mysql','host'=>'localhost','dbname' => 'xp_cms','charset'=>'utf-8','username' => 'root','password' => '123456'];
extract($config);
echo $username,'<hr>';
echo $password,'<hr>';
echo $dbname,'<hr>';
15. compact()
:将一组变量变为关联数组
- compact()是 extract()的逆操作,将一组变量变为关联数组
- 注意参数的写法是写键名字符串而不是传变量
<?php
$point = '在线地图点1';
$lng = 123.2123;
$lat = 22.6445;
$desc = "xcfvsdfsdfsdf";
//注意参数的写法是写键名字符串而不是传变量
print_r(compact('point', 'lat', 'lng','desc'));