批改状态:合格
老师批语:
<?phpnamespace _0811;// 注意箭头函数后面有空格$stu = ['id'=> 1 , 'name'=> '小狗' , 'score' => 89];// key():键名// current() 当前值printf( '[%s] =>%s<br>',key($stu),current($stu));// printf( '[%s] =>%s<br>',key($stu),current($stu));// 数组指针后移// next($stu);// next($stu);// printf( '[%s] =>%s<br>',key($stu),current($stu));next($stu);printf('[ %s ] => %s<br>', key($stu), current($stu));next($stu);printf('[ %s ] => %s<br>', key($stu), current($stu));// next($stu);// printf('[ %s ] => %s<br>', key($stu), current($stu));// prev()指针后移prev($stu);printf('[ %s ] => %s<br>', key($stu), current($stu));//reset()指针重置 指向第一个reset($stu);printf('[ %s ] => %s<br>', key($stu), current($stu));//end()指针 指向第最后一个end($stu);printf('[ %s ] => %s<br>', key($stu), current($stu));// 自动操作// for foreachecho '<hr>';reset($stu);if (count($stu)>0){while(true){printf('[ %s ] => %s<br>', key($stu), current($stu));if(next($stu)){continue;}else{break;}}}else {echo '空';}echo '<hr>';// foreach 简化reset($stu);foreach ($stu as $key=>$value){printf('[ %s ] => %s<br>', $key, $value);}echo '<hr>';// 解构、// list( )// 索引数组解构list ($name,$price) =['手机',5000];echo $name ,',' ,$price;echo $name, $price;// 关联数组// 模板echo '<hr>';// 注意索引必须一致 ,对象可以不一样,但是建议一样list('name'=>$a, 'price'=>$b) =['name'=>'电脑','price'=> 9000];echo $a, $b;echo '<hr>';// 框架使用 extract 模板赋值 方便extract(['name'=>'相机','price'=> 19000]);echo $name, $price;echo '<hr>';// foreach + list解构// 用二维数组来模拟数据表查询结果$users = [['id' => 5, 'name' => '小麦'],['id' => 8, 'name' => '小狗'],['id' => 14, 'name' => '小猫'],];foreach($users as $uer){print_r($uer).'<br>';vprintf('id=%s,name=%s',$uer);}echo '<hr>';// list('id'=>$id, 'name'=>$name) =['id'=>'5','name'=> '小麦'];foreach($users as list('id'=>$id, 'name'=>$name)){printf('id=%s,name=%s<br>',$id,$name);}
<?phpnamespace _0811;// 与值相关// array values () 将数组的值。组成一个新数组 键名会重置$arr = [0=>1, 5=>88, 3=>'js', 2=>'php', 6=>98];// 增删改查后 键名会乱掉printf('<pre>%s</pre>',print_r($arr,true));print_r(array_values($arr));printf('<pre>%s</pre>',print_r(array_values($arr)),true);echo '<hr>';// in_array()查询 某个元素是否在这个数组内 返回布尔值 true falseecho(in_array('ph',$arr)?'找到了':'没有');echo '<hr>';// array_search() 查询 键$key = array_search('js',$arr);echo $key;echo '<hr>';// array_unique( ) 去重 后返回新数组// @ 去掉报错print_r( array_unique($arr));echo '<hr>';printf('<pre>%s</pre>',print_r(array_unique($arr)),true);echo '<hr>';// count( ) 统计当前数组数量echo count($arr);// array_count_values(),统计某个值的出现频率$arr = [0=>1, 5=>88, 3=>'js', 2=>'php', 6=>88];printf('<pre>%s</pre>', print_r(array_count_values($arr), true));echo array_sum($arr);echo '<hr>';// 计算求值操作 array_sum 字符串 不被计算在内 当数字+字符串组成 只算数组 字符串忽略$arr = [0=>1, 5=>88, 3=>'10js', 2=>'php', 6=>88];echo array_sum($arr);echo '<hr>';// 求乘积 字符串 就是解析为 0 加法 可以乘法就出错了echo array_product($arr) . '<br>';echo '<hr>';$arr = [0=>1, 5=>88, 3=>'10js', 2=>'1php', 6=>88];echo array_product($arr) . '<br>';
<?phpnamespace _0811;// 栈操作: 成员的增删,只允许在数组的一端进行// 本质上是增删受限的操作// push()尾部追加 pop()尾部删除 js php 前面加array_$arr = [];echo array_push($arr,10,20,30);echo '<hr>';print_r( $arr);echo '<hr>';print_r( array_push($arr,40,50,60));echo '<hr>';print_r( $arr);echo '<hr>';echo array_pop($arr);echo '<hr>';print_r( $arr);// unshift()头部追加 shift()头部删除 js php 前面加array_echo '<hr>';echo array_unshift($arr);echo '<hr>';echo array_unshift($arr,90,80);echo '<hr>';print_r( $arr);echo '<hr>';echo array_unshift($arr,70);echo '<hr>';print_r( $arr);echo '<hr>';echo array_shift($arr);echo '<hr>';print_r( $arr);echo '<hr>';// 队列:// 1. 尾部追加, 头部删除// array_push(), array_shift()echo array_push($arr,110);print_r( $arr);echo '<hr>';echo array_shift($arr);echo '<hr>';print_r( $arr);// 2. 头部追加, 尾部删除// array_unshift(), array_pop()echo '<hr>';echo array_unshift($arr,120);print_r( $arr);echo '<hr>';echo array_pop($arr);echo '<hr>';print_r( $arr);
<?phpnamespace _0811;$arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';// 排序// 1. 值排序// 升序 默认按照ASCII码 键重置sort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';// 升序 键名不重置$arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];asort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';// 降序 键重置rsort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';// 降序 键不重置$arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];arsort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';sort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';// 2. 键排序// ksort($arr);// krsort($arr);ksort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';krsort($arr);printf('<pre>%s</pre>', print_r($arr, true));echo '<hr>';// 自定义排序规则// usort() 两个值$arr = [90,33,2,184, 24, 3];usort($arr,function($a,$b){// 升序return $a -$b;});printf('<pre>%s</pre>', print_r($arr, true));$arr = [90,33,2,184, 24, 3];usort($arr,function($a,$b){// 降序return $b -$a;});printf('<pre>%s</pre>', print_r($arr, true));// 打乱// shuffle() 每次结果不一样shuffle($arr);printf('<pre>%s</pre>', print_r($arr, true));
<?phpnamespace _0811;// 跟js 类似 js 是传字符串 php 传数组// 查询与替换// array_slice() 取出一部分成员 支持反向取值 负号$stu = ['id' => 101,'name' => '无忌','age' => 20,'course' => 'php','grade' => 80];$res = array_slice( $stu,2,3);printf('<pre>%s</pre>', print_r($res, true));echo '<hr>';$res = array_slice($stu,-5,2);printf('<pre>%s</pre>', print_r($res, true));echo '<hr>';// array_splice(): 增删改 默认功能是: 删除$arr = [10, 28, 9, 33, 56, 21, 82, 47];printf('原始数组元素: <pre>%s</pre>', print_r($arr, true));echo '<hr>';// 默认功能是: 删除print_r(array_splice($arr ,1,3)) ;echo '<hr>';printf('删除后剩余的数组元素: <pre>%s</pre>', print_r($arr ,true));echo '<hr>';// 替换功能是:$res=array_splice($arr, 1, 2, [666,999]);printf('替换后的数组元素: <pre>%s</pre>', print_r($arr ,true));// 增加 不删除就是增加 size =0 s$res=array_splice($arr, 1, 0, [666,999]);printf('增加后的数组元素: <pre>%s</pre>', print_r($arr ,true));
<?phpnamespace _0811;//数组 回调$arr = [150,'php',true,[4, 5, 6],(new class () {}),[],null,false,'',0,'0'];// array_filter(),只返回数组中为true的元素组成的数组 数组过滤器print_r(array_filter($arr)) ;echo '<hr>';$res =array_filter($arr);printf('<pre>%s</pre>',print_r($res,true) );// php自动转为false的值: null, false, 空数组, 空字符串, 0, '0'// 提示: 空对象不能转为false, 但是空数组是falseecho '<hr>';$res1 =array_filter($arr,function($item){// 只返回标量/基本数据类型return is_scalar($item);});printf('<pre>%s</pre>',print_r($res1,true) );echo '<hr>';printf('<pre>%s</pre>',print_r(array_filter($res1),true) );echo '<hr>';// array_map() 对每个成员 ,做回调处理,返回新数组$arr = ['php',[3, 4, 5],(new class () {public string $name = '电脑';public int $price = 8888;}),15,20];// 拉平$res2 = array_map(function($item) {switch (gettype($item)) {case 'array':$item = implode(',', $item);break;case 'object':// get_object_var 返回对象里面的变量 属性$item = get_object_vars($item);break;}return $item;},$arr);printf('<pre>%s</pre>', print_r($res2, true));echo '<hr>';// 重复拉平$arr = ['php',[3, 4, 5],(new class () {public string $name = '电脑';public int $price = 8888;}),15,20];$res3 = array_map(function($item) {switch (gettype($item)) {case 'array':$item = implode(',', $item);break;case 'object':// get_object_var 返回对象里面的变量 属性$item = implode(',', get_object_vars($item));break;}return $item;},$arr);printf('<pre>%s</pre>', print_r($res3, true));echo '<hr>';// array_reduce(): 迭代/归并处理函数$arr = [1,2,3,4,5,6];// 求和echo array_sum($arr);echo '<hr>';// 归并求和$res4 = array_reduce($arr,function ( $acc,$cur){echo $acc , '___',$cur.'<br>';return $acc +$cur;// 从多少基础上叠加},1000);echo '<hr>';echo $res4;echo '<hr>';// array_walk(): 使用自定义函数进行回调处理,返回布尔值$res = ['id' => 10, 'name' => 'admin', 'email' => 'admin@php.cn'];// array_walk(数组, 回调,回调的第三个数组的默认值)// 主要用于数组成员 的格式化, 不受数组指针影响array_walk( $res,function ($value, $key, $color){printf('[ %s ] => <span style="color:%s">%s</span><br>', $key, $color, $value);},'green');
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号