批改状态:合格
老师批语:图文结合, 一看就明白, 非常棒的一个小教程, 作业完成的很好
array_keys:获取所有键名并组成新数组
例
<?php// array_keys,获取所有键名组成的数组$arr = ['id'=>100,'name'=>'张三','email'=>'zhangsan@admin.cn'];// 返回值为键组成的数组print_r(array_keys($arr));
图
array_key_exists:检查指定键名是否存在,返回值为布尔值
例
<?php$arr = ['id'=>100,'name'=>'张三','email'=>'zhangsan@admin.cn'];// array_key_exists,检查指定键名是否存在,返回值为布尔值var_dump(array_key_exists('email',$arr));
图
array_key_last:返回最后一个键名,返回值为字符串
例
<?php$arr = ['id'=>100,'name'=>'张三','email'=>'zhangsan@admin.cn'];// array_key_last,返回最后一个键名,返回值为字符串echo array_key_last($arr).'<hr>';
图
array_key_first:返回第一个键名,返回值为字符串
例
<?php$arr = ['id'=>100,'name'=>'张三','email'=>'zhangsan@admin.cn'];// array_key_first,返回第一个键名,返回值为字符串echo array_key_first($arr);
图
array_values: 取出数组中的值,并以索引数组方式重新排序,位置不变,只改变键名
例
<?php// array_values,取出数组中的值,并以索引数组方式重新排序,位置不变,只改变键名$arr = ['id'=>5,'num'=>10,20,30,30,20,10,5];print_r($arr);// 返回值为索引数组重新排列的新数组print_r(array_values($arr));
图
in_array:检查数组中是否存在某个值,返回值为布尔值
例
<?php$arr = ['id'=>5,'num'=>10,20,30,30,20,10,5];var_dump(in_array(10,$arr));
图
array_search:搜索指定的值,返回值所对应的键名
例
<?php// array_search,搜索指定的值,返回值所对应的键名$arr1 = ['id'=>100,'name'=>'张三','email'=>'zhangsan@admin.cn'];// 返回值为字符串echo array_search('张三',$arr1);
图
array_unique: 删除重复的值,返回值为删除重复值后的新数组
例
<?php// array_unique,删除数组中重复出现的值$arr2 = [5,10,20,30,30,20,10,5,1];print_r($arr2);// 返回值为删除重复值后的新数组print_r(array_unique($arr2));
图
count: 统计元素数量或对象属性数量
例
<?php$arr1 = [['name','id','email'],['BMW','AUDI','VOLVO']];echo '常规计数'. count($arr1).'<hr>';// 在后面加一个参数'1',就可以查询多维数组下面的所有元素个数echo '所有数组的元素个数'.count($arr1,1).'<hr>';
图
array_count_values: 统计所有值的出现频率
例
<?php$arr = [5,10,20,30,30,20,10,5,1];// array_count_values,统计元素出现的次数(频率)echo '<pre>'. print_r($arr,true) .'</pre>';echo '<hr>';echo '返回一个新数组,键为原数组的值,值为它出现的次数';echo '<pre>'. print_r(array_count_values($arr),true) . '</pre>';
图
array_sum 对数组中所有值求和
例
<?php$arr = [5,10,20,30,30,20,10,5,1];// 里面有字符串也能相加,但是只相加数字型字符串,(遇到其他类型字符串就越过)// 返回值为数值型echo '数值型';var_dump(array_sum($arr));echo '<hr>';$arr1 = ['5a',10,20,30,30,20,10,5,1];echo '里面有字符串';var_dump(array_sum($arr1));$arr2 = ['a5',10,20,30,30,20,10,5,1];echo '<hr>';echo '字符串第一个值不是数字';var_dump(array_sum($arr2));echo '<hr>';
图
array_product: 计算数组中所有值的乘积
<?php$arr3 = [5,6];echo '数组元素乘积';var_dump(array_product($arr3));echo '<hr>';$arr4 = ['5',6];echo '数组元素乘积,里面有字符串';var_dump(array_product($arr4));echo '<hr>';$arr4 = ['a5',6];echo '数组元素乘积,字符串第一个值不是数字';var_dump(array_product($arr4));

array_push: 从尾部添加一个或多个元素,返回值为当前元素个数,并不是添加了多少个元素
例
<?php$arr = [];// 返回值为当前元素个数,并不是添加了多少个元素echo '当前元素:'.array_push($arr,'杨过').'<hr>';echo '当前元素:'.array_push($arr,'小龙女').'<hr>';echo '当前元素:'.array_push($arr,'郭襄','张三丰').'<hr>';print_r($arr);
图
array_pop: 从尾部删除最后一个元素
例
<?php// `array_pop`: 从尾部删除最后一个元素$arr = ['杨过','小龙女','郭襄','张三丰'];// 返回值为删除的元素echo array_pop($arr).'<hr>';print_r($arr);
图
array_unshift: 从头部添加一个或多个元素
例
<?php// `array_unshift`: 从头部添加一个或多个元素$arr = ['杨过','小龙女','郭襄','张三丰'];// 返回值为当前元素个数,并不是添加了多少个元素echo array_unshift($arr,'杨康').'<hr>';// 添加方式(可以理解为书写方式)从右边开始向左边书写echo array_unshift($arr,'尹志平').'<hr>';print_r($arr);
图
array_shift: 从头部删除一个元素
例
<?php// `array_shift`: 从头部删除一个元素$arr = ['杨过','小龙女','郭襄','张三丰'];// 返回值为删除的元素echo array_shift($arr).'<hr>';print_r($arr);echo '<hr>';
图
sort: 按值升序排序, 索引重排
例
<?php// `sort`: 按值升序排序, 索引重排$arr = [7,8,6,10,11,1,3,5,20];echo '原数组';echo '<pre>'.print_r($arr,true).'</pre>';sort($arr);echo '重新排序后';echo '<pre>'.print_r($arr,true).'</pre>';
图
asort: 按值升序排序, 索引保持不变
例
<?php$arr = [7,8,6,10,11,1,3,5,20];echo '原数组';echo '<pre>'.print_r($arr,true).'</pre>';echo '重新排序索引不变';asort($arr);echo '<pre>'.print_r($arr,true).'</pre>';
图
rsort: 按值降序排序, 索引重排
例
<?php$arr = [7,8,6,10,11,1,3,5,20];echo '原数组';echo '<pre>'.print_r($arr,true).'</pre>';rsort($arr);echo '按值降序排列';echo '<pre>'.print_r($arr,true).'</pre>';
图
arsort: 按值降序排序, 索引保持不变
例
<?php$arr = [7,8,6,10,11,1,3,5,20];echo '原数组';echo '<pre>'.print_r($arr,true).'</pre>';arsort($arr);echo '按值降序排列,索引保持不变';echo '<pre>'.print_r($arr,true).'</pre>';
图
ksort: 按键名升序排序
例
<?php// `ksort`: 按键名升序排序,以ascall码做对比$arr = ['a'=>7,'bd'=>8,'bc'=>6,10,11,1,3,5,20];echo '原数组';echo '<pre>'.print_r($arr,true).'</pre>';ksort($arr);echo '<pre>'.print_r($arr,true).'</pre>';
图
krsort: 按键名降序排序
例
<?php$arr = ['a'=>7,'bd'=>8,'bc'=>6,10,11,1,3,5,20];echo '原数组';echo '<pre>'.print_r($arr,true).'</pre>';// krsort`: 按键名降序排序krsort($arr);echo '<pre>'.print_r($arr,true).'</pre>';
图
natsort: 支持数字型字符串排序
例
<?php$arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];echo '普通的以值排序';sort($arr);echo '<pre>'.print_r($arr,true).'</pre>';echo '自然排序';$arr1 = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];natsort($arr1);echo '<pre>'.print_r($arr1,true).'</pre>';
图
shuffle: 随机打乱一个数组的顺序
例
<?php$arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];sort($arr);echo '<pre>'.print_r($arr,true).'</pre>';shuffle($arr);echo '<pre>'.print_r($arr,true).'</pre>';
图:每次执行都会改变
array_flip: 交换数组中的键和值,返回值为一个新数组
例
<?php$arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];echo '<pre>'.print_r($arr,true).'</pre>';// `array_flip`: 交换数组中的键和值,返回值为一个新数组$arr1 = array_flip($arr);echo '<pre>'.print_r($arr1,true).'</pre>';
图
array_reverse: 反转一个数组,返回值为一个新数组
例
<?php$arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];echo '<pre>'.print_r($arr,true).'</pre>';// `array_reverse`: 反转一个数组,返回值为一个新数组$arr1 = array_reverse($arr);echo '<pre>'.print_r($arr1,true).'</pre>';
图
array_slice: 从数组中取出一部分
例
<?php// `array_slice`: 从数组中取出一部分$arr = ['杨过','小龙女','郭襄','尹志平','杨康'];//返回值为取出的元素组成的新数组//参数为数组,从某个位置开始,从开始位置起取几个元素//从下标2开始,取完$arr1 = array_slice($arr,2);echo '从下标2开始,取完';echo '<pre>'.print_r($arr1,true).'</pre>';//从下标2开始,取2个$arr2 = array_slice($arr,2,2);echo '从下标2开始,取2个';echo '<pre>'.print_r($arr2,true).'</pre>';echo '原始数组不会改变';echo '<pre>'.print_r($arr,true).'</pre>';
图
array_splice: 去掉数组中一部分并用其它值代替
例
<?php$arr = ['杨过','小龙女','郭襄','尹志平','杨康'];echo '<pre>'.print_r($arr,true).'</pre>';// `array_splice`: 去掉数组中一部分并用其它值代替,返回值为去掉的元素组成的数组//参数1为数组,参数2从某个位置开始,参数3从开始位置起取几个元素(不写默认到最后),参数4替换的元素(不写就是删除不替换)替换两个元素用数组,单个元素就用字符串array_splice($arr,3,2,['丘处机','金轮法王']);echo '<pre>'.print_r($arr,true).'</pre>';
图
array_rand: 从数组中随机取出一个或多个元素的键名
例
<?php$arr = ['杨过','小龙女','郭襄','尹志平','杨康'];echo '<pre>'.print_r($arr,true).'</pre>';// `array_rand`: 从数组中随机取出一个或多个元素的键名// 参数1为需要取键的数组,参数2为取多少个(默认为1)// 返回值为键组成的新的数组// 如果取1个,返回值为字符串$res = array_rand($arr,3);echo '<pre>'.print_r($res,true).'</pre>';
图
array_column: 获取多维数组中一列组成的新数组
例
<?php// `array_column`: 获取多维数组中一列组成的新数组$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];//参数1提取的原数组,参数2提取的字段,参数3参考字段(可以不写)$result = array_column($arr1,'name');echo '<pre>'.print_r($result,true).'</pre><br>';$result = array_column($arr1,'name','id');echo '<pre>'.print_r($result,true).'</pre><br>';
图
array_replace 使用后面数组的值替换第一个数组的值
例
<?php// `array_replace` 使用后面数组的值替换第一个数组的值$arr = ['id'=>10,'name'=>'杨过','email'=>'yangguo@admin.cn'];echo '<pre>'.print_r($arr,true).'</pre><br>';$arr1 = ['name'=>'小龙女','email'=>'xiaolongnv@admin.cn'];// 返回值为替换后的新数组// 参数1为源数组,参数2为替换数组$result = array_replace($arr,$arr1);echo '替换后:';echo '<pre>'.print_r($result,true).'</pre><br>';
图
array_intersect: 计算数组元素的交集(相同元素),返回值为相同元素组成的新数组
例
<?php$arr = [10,20,30,40];$arr1 = [20,30,50,60];// 返回值为相同元素组成的新数组$res = array_intersect($arr,$arr1);print_r($res);
图
array_intersect_assoc: 返回数组交集,键名也做比较,键值对相同才会返回
例
<?php// `array_intersect_assoc`: 返回数组交集,键名也做比较,键值对相同才会返回$arr = ['id'=>10,'name'=>'杨过','email'=>'yangguo@admin.cn'];$arr1 = ['id'=>10,'name1'=>'杨过','email'=>'xiaolongnv@admin.cn'];$res = array_intersect_assoc($arr,$arr1);echo '键与值其中一个不相同就不会返回<br>';print_r($res);
图
array_diff:返回数组的差集
例
<?php// `array_diff`:返回数组的差集$arr = ['id'=>10,'name'=>'杨过','email'=>'yangguo@admin.cn'];$arr1 = ['id'=>10,'name'=>'小龙女','email'=>'xiaolongnv@admin.cn'];//参数1为源数组,参数2为比较数组,返回值为源数组作为基础与比较数组不相同的元素$res = array_diff($arr,$arr1);print_r($res);
图
array_combine: 通过合并两个数组来创建一个新数组
例
<?php$arr = ['id','name','email'];$arr1 = [100,'杨过','yangguo@admin.cn'];// 参数1数组为键,参数2数组为值,返回一个新数组$res = array_combine($arr,$arr1);print_r($res);
图
array_merge: 把一个或多个数组合并为一个数组
例
<?php// `array_merge`: 把一个或多个数组合并为一个数组$arr = ['c'=>'cat','d'=>'dog','t'=>'tiger'];$arr1 = ['c'=>'colt','t'=>'tabby','h'=>'horse'];// 两个数组合并,同键名的,第二个数组会覆盖掉前一个数组的元素$res = array_merge($arr,$arr1);echo '<pre>'.print_r($res,true).'</pre><hr>';// 如果只是想把第二个数组里面不同键名的元素合并进第一个数组,可以使用'+'号$res = $arr +$arr1;echo '这是使用+号合并';echo '<pre>'.print_r($res,true).'</pre>';
图
array_chunk: 将一个数组分割成多个子数组
例
<?php// `array_chunk`: 将一个数组分割成多个子数组// 可以理解成分成几份来显示$arr = [7,8,6,10,11,1,3,5,20];// 返回值为分割后的多为数组echo '<pre>'.print_r(array_chunk($arr,3),true).'</pre>';
图
current: 获取当前元素的值
例
<?php// `current`: 获取当前元素的值$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];print_r(current($arr1));
图
key: 获取当前元素的键名
例
<?php// `current`: 获取当前元素的值$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];//返回值为当前指针指向的元素的键名echo key($arr1);
图:指针未移动当前元素的键为0
next: 将数组中的内部指针向前移动一位
例
<?php$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];// `next`: 将数组中的内部指针向前移动一位echo '当前指针指向的键:'. key($arr1) . '<br>当前指向的元素:';print_r(current($arr1));echo '<hr>';//指针下移next($arr1);echo '下移后指针指向的键:'. key($arr1) . '<br>下移后指向的元素:';print_r(current($arr1));
图
prev: 将数组的内部指针倒回一位
例
<?php$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];next($arr1);echo '当前指针指向的键:'. key($arr1) . '<br>当前指向的元素:';print_r(current($arr1));echo '<hr>';prev($arr1);echo '后退后指针指向的键:'. key($arr1) . '<br>后退后指向的元素:';print_r(current($arr1));
图
end: 将数组的内部指针指向最后一个单元
例
<?php$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];echo '当前指针指向的键:'. key($arr1) . '<br>当前指向的元素:';print_r(current($arr1));echo '<hr>';end($arr1);echo '指针指向最后一个键:'. key($arr1) . '<br>指针指向最后一个元素:';print_r(current($arr1));
图
reset: 将数组的内部指针指向第一个单元
例
<?php$arr1 = [['id'=>101,'name'=>'杨过','email'=>'yangguo@admin.cn'],['id'=>102,'name'=>'小龙女','email'=>'小龙女@admin.cn'],['id'=>103,'name'=>'尹志平','email'=>'尹志平@admin.cn'],];end($arr1);echo '指针指向最后一个键:'. key($arr1) . '<br>指针指向最后一个元素:';print_r(current($arr1));echo '<hr>';reset($arr1);echo '复位后指向的键:'. key($arr1) . '<br>复位后指向的元素:';print_r(current($arr1));
图
array_fill: 用给定的值填充数组
例
<?php// `array_fill`: 用给定的值填充数组// 参数1键名开始的位置,参数2表示需要几条数据,参数3为值$res = array_fill(2,5,'computer');echo '<pre>'. print_r($res,true) . '</pre>';
图
array_fill_keys: 使用指定的键和值填充数组
例
<?php$arr = ['car','bus','egg'];// 参数1为指定的数组其中的值作为新数组的键,参数2为新数组的值// 返回值为一个新数组$result = array_fill_keys($arr,'computer');echo '<pre>'. print_r($result,true) . '</pre>';
图
array_pad: 以指定长度将一个值填充进数组
例
<?php$arr = ['car','bus','egg'];// `array_pad`: 以指定长度将一个值填充进数组// 参数1为数组,参数2为长度,参数3为填充的值// 参数2为正数 则填补到数组的右侧,如果为负则从左侧开始填补$result = array_pad($arr,5,0);echo '<pre>'. print_r($result,true) . '</pre>';// 参数2为正数 则填补到数组的右侧,如果为负则从左侧开始填补$result = array_pad($arr,-5,-1);echo '<pre>'. print_r($result,true) . '</pre>';
图
list: 将数组中的值赋予一组变量(类似解构赋值)
例
<?php// `list`: 将数组中的值赋予一组变量(类似解构赋值)$arr = [100,'杨过','yangguo@admin.cn'];// 把数组里面的值,分别赋值给list里面的变量,如果list里面的变量多出来的会赋值为空list($id,$name,$email) = $arr;echo "\$id={$id},\$name={$name},\$email={$email}";
图
implode: 将数组元素按指定字符拼装成字符串
例
<?php// `implode`: 将数组元素按指定字符拼装成字符串$arr1 = ['apple','huawei','xiaomi'];$res = implode('+',$arr1);echo $res;
图
explode: 将字符串分割为数组
例
<?php$arr1 = ['apple','huawei','xiaomi'];$res = implode('+',$arr1);echo $res.'<hr>';// `explode`: 将字符串分割为数组 implode的逆操作$arr2 = explode(',',$res);print_r($arr2);
图
extract: 将关联数组拆分成变量名值对
例
<?php// `extract`: 将关联数组拆分成变量名值对$arr = ['id'=>10,'name'=>'杨过','email'=>'yangguo@admin.cn'];extract($arr);echo "id={$id},name={$name},email={$email}";
图
compact: 将一组变量名值对拼装成一个关联数组键值对
例
<?php$arr = ['id'=>10,'name'=>'杨过','email'=>'yangguo@admin.cn'];extract($arr);echo "id={$id},name={$name},email={$email}.<hr>";// `compact`: 将一组变量名值对拼装成一个关联数组键值对// 返回值为关联数组$res = compact('id','name','email');print_r($res);
图
array_filter: 用回调函数过滤数组中的单元
例
<?php// `array_filter`: 用回调函数过滤数组中的单元$arr = [null,10,5,'',0,false,20,'-1'];// 它会过滤掉,值为空,null,0,false的元素,并返回过滤后的元素$res = array_filter($arr);print_r($res);echo '<hr>';// 也可以加入回调函数,来设置符合条件的元素返回$res = array_filter($arr,function ($value) {return $value > 5;});print_r($res);
图
array_map: 为数组的每个元素应用回调函数
例
<?php// `array_map`: 为数组的每个元素应用回调函数$arr = [2,5,7,10];// 参数1为回调函数,参数2及2以上都是数组// 参数1可以是闭包$res = array_map(function ($value) {return $value * $value;},$arr);print_r($res);echo '<hr>';//创建一个闭包$sum = function ($value) {return $value * 2;};//参数1为闭包$res = array_map($sum,$arr);print_r($res);echo '<hr>';$keys = ['id','name','email'];$value = [100,'杨过','yangguo@admin.cn'];//处理2个数组$res = array_map(function ($key,$value) { return [$key=>$value];},$keys,$value);print_r($res);
图
最后,感觉回调处理很重要啊,以前的很多实例都有用到,今天又写了一遍,但是感觉回调处理,还是有那么一点点懵,案例看少了,应用场景想不出来太多
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号