登录  /  注册
博主信息
博文 28
粉丝 0
评论 0
访问量 28948
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP中栈与队列及数组操作与POD初入探讨
G
原创
1009人浏览过

数组处理函数和 PDO 初入

数组处理函数

  • 键名相关处理函数
    key():打印数组之中第一个成员的键名
  1. $arr = ['id'=>1,'name'=>'gggggg','email'=>'15845457854@gmail,com'];
  2. // 打印数组成员的键名:
  3. echo key( $arr);
  4. // 输出: id

next():将数组的下标移动到下一位。

  • reset()
    输出数组中的当前元素和下一个元素的值,然后把数组的内部指针重置到数组中的第一个元素:
  1. $arr = ['id'=>1,'name'=>'gggggg','email'=>'15845457854@gmail,com'];
  2. // 打印数组成员的键名:
  3. echo key( $arr);
  4. next($arr); //下标移至下一位
  5. echo '<hr>';
  6. echo key($arr);
  7. echo '<hr>';
  8. reset($arr); //重置下标恢复到第一位
  9. echo key($arr);

  • array_keys()
    返回一个数组,数组内的成员是原数组之中成员的键名。
  1. $arr = ['id'=>1,'name'=>'gggggg','email'=>'15845457854@gmail,com'];
  2. print_r(array_keys($arr));
  3. // 返回值:Array ( [0] => id [1] => name [2] => email )
  • array_values()
    返回一个数组,数组内的成员是原数组之中的所有的值(不包括键名),新数组的键名从 0=>1 开始递增
  1. $arr = ['id'=>1,'name'=>'gggggg','email'=>'15845457854@gmail,com'];
  2. print_r(array_values($arr);)
  • array_search()
    在数组中搜索某个键值,并返回对应的键名。
    不存在返回 false,存在的话返回元素值对应的键名
    搜索一个值,返回这个值相对于的键名

    语法:array_search("要查询的值",被查询的数组)

  1. $arr = ['id'=>1,'name'=>'gggggg','email'=>'15845457854@gmail,com'];
  2. print_r(array_search("ggg",$arr));

  • array_anique()
    移除数组之中重复的值
  1. $arr = [1,2,3,4,5,1,1,1,2,3,2,5,5,5,4,4,3,3,2,1];
  2. print_r(array_unique($arr));

  • 数组运算
    返回数组之中所有成员的和:array_sum()
    返回数组之中所有成员相乘的积:array_product()

    返回的值是根据数组成员的类型来改变的,如果全部都为整型,最后返回的一定是int,但是只要有一个是浮点float最后返回的值得类型就一定是float

  1. $arr = [1,2,3,4,5,6,7,8,9];
  2. print_r(array_sum($arr));
  3. echo "<hr>";
  4. print_r(array_product($arr));

  • 数组的拆分于合并
    array_slice():从数组之中删除【取出】一部分元素,并返回

    语法:array_slice(数组,开始删除[取出]的位置,取出的长度)

  1. $stu = ['id'=>101,'name'=>'张无忌','age'=>20,'course'=>'php'];
  2. print_r(array_slice($stu,-3,2));

  • array_splice():对数组成员增删改

    array_splice()是针对原数组直接操作的函数,所有操作都会影响到原来的数组
    语法:array_splice(数组,开始位置,长度,要插入的数组[可选])
    删除替换增加都是从开始位置参数开始设置
    删除:开始位置不为 0,长度不为 0
    替换:开始位置不为 0,长度为想要替换的个数,替换的数组
    增加:长度为 0,当长度不为 0 时,先删除符合长度的数组成员再插入新成员

  1. $arr = [1,2,3,4,5,6,7,8,9];
  2. // 删除
  3. print_r(array_splice($arr,2,3));
  4. echo "<hr>";
  5. print_r($arr);
  6. echo "<hr>";
  7. // 替换
  8. $place = [888,999,1111];
  9. print_r(array_splice($arr,2,3,[888,999,1111]));
  10. echo "<hr>";
  11. print_r($arr);
  12. // 增加
  13. $arr1 = [1,2,3,4,5];
  14. echo "<hr>";
  15. print_r(array_splice($arr1,2,0,$place));
  16. echo "<hr>";
  17. print_r($arr1);

extract():将关联数组拆分为变量

  1. $config = ['type'=>'mysql','host'=>'localhost','dbname'=>'phpedu','charset'=>'utf=8'];
  2. extract($config); //拆分成为普通变量
  3. echo $type."<br>".$host."<br>".$dbname."<br>".$charset;

compact():将一组变量合并为关联数组

  1. $name = "ggg";
  2. $age = 19;
  3. $gender = "male";
  4. $res = compact('name','age','gender');
  5. print_r($res);

栈与队列

栈于队列的特点:
LIFO(last in first out:后进先出)–栈这家伙的特点 ?
FIFO(fist in first out:先进先出)–队列这家伙的特点 ?

PHP 中 ,栈与队列是一种特殊的线性表,都是只能在一端操作:头部尾部
同时栈于队列还会提及一个“入栈/队”,“出栈/队”的操作。并且都是从一端进行的。
在头部:array_push()是向尾部添加数据,array_pop()是向尾部弹出数据
在尾部:array_unshift()是向头部添加数据,array_shift()是从头部弹出数据

首先我们来说一下队列的入队和出队的顺序:FIFO
First Input First Outpu就是先进来的数据先出队
其次来说一下队列之中出队和入队的方向。
队列必须设置入队和出队的顺序
在队列之中,可以通过搭配push/popshift/unshift来设置入队和出队的方向。
下面举个例子:

栈的顺序:LIFO

后入先出:
我们可以这样理解,栈的数据读取有两个操作:分别是存和取,但是如何判断哪些是先进来的数据哪些是后进来的数据,我们可以通过一个例子来说明:
对于存放数据:我们可以理解为存盘子【装菜的盘子】,先拿过来的是不是就会放在最底部,后拿过来的盘子是不是就放置最上面?
所以我们可以画出一张这样的草图:

这样一来是不是就很清楚了,分清楚顺序之后就可以用代码来举例子:

  1. $arr = [1,2,3];
  2. // 先来看下原数组
  3. print_r($arr);
  4. echo "<hr>";
  5. // 栈的数据出入顺序:后进先出
  6. // 添加数据: pop || push
  7. array_push($arr,4);
  8. array_push($arr,5,6,7);
  9. print_r($arr);
  10. echo "<hr>";
  11. echo "后进来的数据是在最底部的,所以后进来的先出去:"."<br>";
  12. echo "<hr>";
  13. // 弹出数据
  14. array_pop($arr);
  15. print_r($arr);
  16. echo "<hr>";
  17. array_pop($arr);
  18. print_r($arr);
  19. echo "<hr>";
  20. array_pop($arr);
  21. print_r($arr);
  22. echo "<hr>";
  23. array_pop($arr);
  24. print_r($arr);
  25. echo "<hr>";
  26. // 再来看另外一组函数实现栈于队列的入栈和出栈
  27. // unshift || shift
  28. $arr1 = ['a','b','c'];
  29. print_r($arr1);
  30. echo "<hr>";
  31. // 添加数据:
  32. echo "此时添加进来的数据是最后添加进来的,但是是在头部添加,所以c是最先进来的,因为是在最底层"."<br>";
  33. array_unshift($arr1,'d');
  34. print_r($arr1);
  35. echo "<hr>";
  36. array_unshift($arr1,'e','f','g');
  37. print_r($arr1);
  38. echo "<hr>";
  39. // 弹出数据:
  40. echo "最后进来的最先出去,所以,最后进来的是在最上面,于是弹出:"."<br>";
  41. array_shift($arr1);
  42. print_r($arr1);
  43. echo "<hr>";
  44. array_shift($arr1);
  45. print_r($arr1);
  46. echo "<hr>";
  47. array_shift($arr1);
  48. print_r($arr1);
  49. echo "<hr>";

队列的顺序

由于队列是我们规定从那边进对,那边出队,所以我们可以把队列想象成为一个通道【地铁】
于是先进先出的顺序我们就好理解了。
可以通过举一个例子:汽车过隧道,我们是不是只能挨个进挨个出,必须按顺序来,所以最先进入隧道的汽车就最先出去。

再来看下面一幅图加深理解

于是我们就可以通过代码来判断那些数据是先进来的:

  1. $arr = [1,2,3];
  2. // 先来看下原数组
  3. print_r($arr);
  4. echo "<hr>";
  5. // 队列的顺序:先进先出
  6. // 1. 尾部进,头部出
  7. // 添加数据:
  8. echo "通过push向尾部添加数据"."<br>";
  9. array_push($arr,4);
  10. print_r($arr);
  11. echo "<hr>";
  12. array_push($arr,5,6,7);
  13. print_r($arr);
  14. echo "<hr>";
  15. // 弹出数据:
  16. echo "通过shift从头部弹出数据"."<br>";
  17. array_shift($arr);
  18. print_r($arr);
  19. echo "<hr>";
  20. array_shift($arr);
  21. print_r($arr);
  22. echo "<hr>";
  23. array_shift($arr);
  24. print_r($arr);
  25. echo "<hr>";
  26. // 2.头部进,尾部出
  27. // unshift + pop
  28. ......

初入 PDO

PDO 是什么:(PHP Data Objects)是一种在 PHP 里连接数据库的使用接口。PDO 与 mysqli 曾经被建议用来取代原本 PHP 在用的 mysql 相关函数,基于数据库使用的安全性,因为后者欠缺对于 SQL 注入的防护。
PDO 三要素:DSN数据源 username password
初入就不细说了,使用案例带过吧,后续会继续更新 PDO 相关文章的

服务端:

  1. namespace pdo_edu;
  2. return [
  3. 'type' => $type ?? 'mysql',
  4. 'host' => $host ?? 'localhost',
  5. 'dbname' => $dbname ?? 'lv',
  6. 'port' => $port ?? '3306',
  7. 'charset' => $charset ?? 'utf8',
  8. 'username' => $username ?? 'root',
  9. 'password' => $password ?? 'zhoujielun521'
  10. ];

拿取数据:

  1. namespace pdo_edu;
  2. $config = require __DIR__ . '/../config/database.php';
  3. use PDO;
  4. //PDO数据连接~三要素 DSN数据源 username password,
  5. // extract()
  6. $type = $config['type'];
  7. $host = $config['host'];
  8. $dbname = $config['dbname'];
  9. $username = $config['username'];
  10. $password = $config['password'];
  11. $dsn = sprintf('%s:host=%s;dbname=%s',$type,$host,$dbname);
  12. try {
  13. $pdo = new PDO($dsn,$username ,$password);
  14. // var_dump($pdo);
  15. } catch(\Exception $e) {
  16. die($e->getMessage());
  17. }
批改老师:灭绝师太灭绝师太

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学