批改状态:合格
老师批语:应该学好当下才最重要
<?php// ① 键名相关$arr = ['id'=>1, 'name'=>'admin', 'email'=> 'admin@php.cn'];// $keys = [];// echo key($arr);// next($arr);// echo key($arr);// while ( key($arr)) {// $keys[] = key($arr);// next($arr);// }// print_r($keys);// echo "<hr>";//简化的方式获得所有的keys。print_r(array_keys($arr));//检查一个key是否存在?echo array_key_exists('status', $arr) ? '存在' : '不存在', '<hr>';// 拿到第一个key或最后一个keyecho array_key_first($arr);echo array_key_last($arr);// ② 与值相关$arr = [3 => 10, 9 => 20, 0 => 'html', 'id' => 'css', 20 => 20, 30];// print_r($arr);// 获取所有值// $valus = [];// foreach ($arr as $value) {// $values[] = $value;// }// print_r($values);// array_values():返回数组的元素的值组成的索引数组print_r(array_values($arr));// echo in_array('css3', $arr) ? '找到了' : '没有', '<hr>';// array_search():找到了返回元素值对应的键名,找不到返回布尔false// var_dump(array_search('css3', $arr));// 函数:功能, 参数, 返回值// 去重print_r(array_unique($arr));$arr = [10, 20, 30,'123', '888php'];echo array_sum($arr); //字符串也会转为数字 - 取其中的数据,但如果是字母先开始,则变为0。echo array_product($arr); //所有相乘
<?php// 栈: 是添加与删除受限的一种数据结构,数据的增删仅允许在一端进行, LIFO,最后进最先出$stack = [];// 在栈的尾部进行增删echo array_push($stack, 10, 20, 30);print_r($stack);echo '<br><hr>';echo array_pop($stack); // 从最后一个逐步弹出,知道没有echo array_pop($stack);echo array_pop($stack);var_dump(array_pop($stack));echo '<br><hr>';// 在栈的头部进行增删echo array_unshift($stack, 'php', 'mysql');print_r($stack);echo '<br><hr>';echo array_shift($stack);echo array_shift($stack);// 队: 先进先出FIFO$queue = [];// 尾部进队 + 头部出队, array_push + array+shift// 尾部进队array_push($queue, 10,20,30);print_r($queue);echo '<br><hr>';// 头部出队,对照栈,栈尾部进,尾部出echo array_shift($queue);echo array_shift($queue);echo array_shift($queue);echo '<br><hr>';// 头部进队+尾部出队 + , array_unshift + array+pop// o:这种情况应该就是栈了。这是否也意味着array_push和array_unshift是一样的?array_unshift($queue, 'one', 'two', 'three');print_r($queue);echo '<br>';echo array_pop($queue);echo array_pop($queue);echo array_pop($queue);echo array_pop($queue);//最后一个应该就没出了echo '<br>';print_r($queue); //里面就没有内容了echo '<br><hr>';//具体如图:// 自己的一个测试// ‘进’有两个:push(尾部进),unshift(头部进)$train=[];array_push($train,'1','2','3');array_unshift($train,'four','five','six');array_push($train,'7','8','9');array_unshift($train,'ten');print_r($train);echo '<br><hr>';// 自己的一个测试// ‘出’有两个:pop(尾部进),shift(头部出)array_pop($train);array_shift($train);array_pop($train);array_shift($train);print_r($train);echo '<br><hr>';// 应用-传统创建数组之外的另外一种方式$arr = [];array_push($arr, 'a');array_push($arr, 'b');array_push($arr, 'c');print_r($arr);//一种应用,例如形成一个url,或者从url中取&间隔开的参数等。// http:://php.io/index.php?m=module&c=controller&a=add
<?php$arr = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];// print_r($arr);// 默认按值的升序// sort($arr);// asort($arr); // key跟着一起走,而非新生成一个// print_r($arr);$arr = ['e' => 10, 'a' => 30, 'p' => 50];// print_r($arr);// ksort($arr); // 按照key排序// krsort($arr);// print_r($arr);$arr = [90, 33, 4, 10, 2, 12];// print_r($arr);// 用回调函数自定义排序,这样就可以在函数中增加一些复杂操作,例如不让某个单元出现等。usort($arr, function($a, $b){return $a - $b;});// 上面这个结果通过两个数的比较来实现排序,结果跟下面的直接sort是一样的。sort($arr);// print_r($arr);// 自然排序$arr = ['img1.jpg', 'img5.jpg', 'img10.jpg', 'img8.jpg'];print_r($arr); //这种情况下10在8前面。natsort($arr); //这种情况下则正常了。
<?php// array_slice(): 从数组中取出一部分元素$stu = ['id' => 101, 'name' => '无忌', 'age' => 20, 'course' => 'php', 'grade' => 80];// print_r($stu);// $res = array_slice($stu, 0);// $res = array_slice($stu, 0, 2);// $res = array_slice($stu, 1, 3);// $res = array_slice($stu, -3, 2); // 从-3位置开始取两个// print_r($res);// array_splice(&$arr, ....):实现增删改$arr = [10, 28, 9, 33, 56, 21, 82, 47];print_r($arr);// 从第二个位置删除两个元素。$res = array_splice($arr, 1, 2);// 返回被删除的元素组成的数组print_r($res);// 返回剩下的arrprint_r($arr);// 替换(删除并替换两个元素)$res = array_splice($arr, 1, 2, [888, 999]);// print_r($res);// print_r($arr);// 新增(从第二个位置新增两个新元素)$res = array_splice($arr, 1, 0, [888, 999]);print_r($res);print_r($arr);
<?php$keys = ['type', 'host', 'dbname', 'username', 'password'];$values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];print_r(array_combine($keys, $values));// array_merge() // 这个没展开,后面自己查询下
<?php// 1. array_filter():只返回元素可以转为为true的元素组成的数组$arr = [150,'php', true,[4,5,6], (new class {}), [], null, false,'', 0, '0'];$res = array_filter($arr, function($item){return $item;});// [], null, false,'', 0, '0' : 转为false// 也可以简化为下面这种写法$res = array_filter($arr);// 只返回标量,数组和对象等不返回$res = array_filter($arr,function($item) {return is_scalar($item);});// print_r($res);//-----------------------------------------------// array_map():为数组中的每个元素应用指定的回调函数进行处理,并返回新数组$arr = ['php',[3,4,5], (new class {public $name='电脑';public $price=8888;}), 15, 20];// 任务:如果数组元素是对象,则输出它的属性,如果是数组,则将它转为字符串输出,否则直接输出$res = array_map(function($item){//判断当前元素是否是对象或数组switch (gettype($item)) {case 'object':$item = get_object_vars($item);$item = implode(', ', $item);// 这行及下一行(break)也可以取消掉,结果一样,但现在这种写法更容易理解break;case 'array':$item = implode(', ', $item);// 将数组转化为以,分隔得字符串。}return $item;}, $arr);print_r($res);
<?php$arr = ['huawei', 'xiaome', 'apple', 'oppo', 'vivo'];// implode(): 数组 --》 字符串echo implode(', ', $arr); // 转化为用,分割的数组。// extract(): 将关联数组拆分为变量$config = ['type' => 'mysql', 'host' => 'localhost', 'dbname' => 'phpedu', 'charset' => 'utf8'];// $type = 'mysql';// $host = 'localhost';// ....// $host = $config['host'];// $dbname = $config['dbname'];// $charset = $config['charset'];extract($config); // 例如针对post进来的一组输入进行操作。echo $type, $host, $dbname, $charset;// compact():将一组变量组装成关联数组$id = 1;$username = 'peter zhu';$gender = '男';print_r(compact('id','username', 'gender'));
// ‘进’有两个:push(尾部进),unshift(头部进)$train=[];array_push($train,'1','2','3');array_unshift($train,'four','five','six');array_push($train,'7','8','9');array_unshift($train,'ten');print_r($train);echo '<br><hr>';// 自己的一个测试// ‘出’有两个:pop(尾部出),shift(头部出)array_pop($train);array_shift($train);array_pop($train);array_shift($train);print_r($train);echo '<br><hr>';// 应用-传统创建数组之外的另外一种方式$arr = [];array_push($arr, 'a');array_push($arr, 'b');array_push($arr, 'c');print_r($arr);echo '<br><hr>';//---- 排序asort($arr);print_r($train);echo '<br><hr>';$slice = array_slice($train, 1,2);print_r($slice);echo '<br><hr>';$addentry = array_splice($slice, 15, 0, ['bicycle', 'knift', 'plane']);//这个地方增加新元素的地方尽管写的key值很大,也是从最后一个顺位去添加。print_r($addentry);print_r($slice);echo '<br><hr>';$keys = ['type', 'host', 'dbname', 'username', 'password'];$values = ['mysql', 'localhost', 5, 3, [1,2]];$new1 = array_combine($keys, $values);$new2 = array_merge($keys, $values);print_r($new1);echo '<br>';print_r($new2);echo '<br><hr>';$new3 = array_map(function($value){switch(gettype($value)){case 'intger':$value = 0;case 'array':$value = 1;case 'string':$value = 9;}return $value;}, $new2);print_r($new3);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号