博客列表 >数组函数处理

数组函数处理

Dong.
Dong.原创
2020年08月31日 15:09:42674浏览

1.栈与队列

含义:尽管在PHP中允许直接访问某个数组单元,但PHP仍提供了各种有趣的方式来处理数组。特别要说的是,某些函数使PHP数组非常容易的实现了一个栈或队列。

1.1 什么是栈

栈:后进先出(LIFO-last in first out):最后插入的元素最先出来
栈的插入操作array_push()叫做进栈,删除操作array_pop()叫做出栈。

1.1.1 进栈操作 array_push()

  1. // 进栈操作:在数组尾部添加元素,返回数组新的长度
  2. echo '数组新的长度:'.array_push($stack, 4, 5, 6).'
  3. ';
  4. // 输出:6
  5. print_r($stack);
  6. // 打印新数组:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
1.1.2 出栈操作 array_pop()

  1. //出栈操作:第1次删除最后一个元素,返回最后删除元素(先进后出)
  2. echo '第1次出栈:'.array_pop($stack).'
  3. ';
  4. // Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
  5. //第2次出栈
  6. echo '第2次出栈:'.array_pop($stack).'
  7. ';
  8. // Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
  9. //第3次出栈
  10. echo '第3次出栈:'.array_pop($stack).'
  11. ';
  12. // Array ( [0] => 1 [1] => 2 [2] => 3 )
  13. //.....如果数组是空的,或者非数组,将返回 NULL。

1.2 什么是队列

含义:先进先出(FIFO-first in first out):最先插入的元素最先出来。
在具体应用中通常用链表或者数组来实现;
队列只允许在后端进行插入操作array_unshift(),在前端进行删除操作array_shift()。

1.2.1 元素进入队列操作array_unshift()

  1. // 向数组插入多个新元素。插入的值将按顺序放置到数组的开头
  2. echo array_unshift($queue,4,5,6);
  3. // 输出:6
  4. print_r($queue);
  5. // 打印新数组:Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 1 [4] => 2 [5] => 3 )
1.2.1 取出队列首元素操作array_unshift()

  1. //取出队列操作:第1次删除首元素,返回删除首元素(先进先出)
  2. echo '第1次取出队列首元素:'.array_shift($queue).'
  3. ';
  4. // Array ( [0] => 5 [1] => 6 [2] => 1 [3] => 2 [4] => 3 )
  5. //第2次出栈
  6. echo '第2次取出队列首元素:'.array_shift($queue).'
  7. ';
  8. // Array ( [0] => 6 [1] => 1 [2] => 2 [3] => 3 )
  9. //第3次出栈
  10. echo '第3次取出队列首元素::'.array_shift($queue).'
  11. ';
  12. // Array ( [0] => 1 [1] => 2 [2] => 3 )

队列的作用:

  1. 对列的作用:队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。

2. 数组的键/值操作

2.1 键操作

  1. // 定义一个数组
  2. $arr = ['id'=1,'name'='小明','age'='18'];

2.2 获取键名操作

2.2.1 循环方法获取键名
  1. //方法1:循环得到键名
  2. while ( key($arr)) {
  3. $arr_key[] = key($arr);
  4. next($arr);
  5. }
  6. print_r($arr_key);
  7. //输出结果: Array ( [0] => id [1] => name [2] => age )
2.2.2 使用array_keys()获取键名

  1. //方法2:使用 array_keys() 函数
  2. $arr_key=array_keys($arr);
  3. print_r($arr_key);
  4. //输出: Array ( [0] => id [1] => name [2] => age )

2.3 值操作

2.3.1 通过循环获得所有值
  1. //方法1:循环得到所有值
  2. foreach ($arr as $value) {
  3. $values[] = $value;
  4. }
  5. print_r($values);
  6. //输出:Array ( [0] => 1 [1] => 小明 [2] => 18 )
2.3.2 使用array_values()函数获得所有值

  1. //方法2:使用 array_values() 函数
  2. $values=array_values($arr);
  3. print_r($values);
  4. //输出:Array ( [0] => 1 [1] => 小明 [2] => 18 )

3. 数组常用函数

3.1 array():用于创建数组

  1. // 创建数组
  2. $stu = array('jack','male',30);
  3. print_r($stu); // 输出 Array ( [0] => jack [1] => male [2] => 30 )
  4. // 实际操作中,往往会省略这个函数,用中括号代替
  5. $stu = ['alice','female',20];
  6. print_r($stu); // 输出 Array ( [0] => alice [1] => female [2] => 20 )

3.2 count():计算并返回数组的长度

  1. echo count([1,2,3,4,5,6,7,8,9,10]); // 返回 10
  2. echo count([1,2,3,true,NULL,'88']); // 返回 6
  • 与值相关的

3.3 array_values():返回数组中所有的值,并返回一个新的索引数组

  1. $pets = ['dog' => '旺财', 'cat' => '花花', 'pig' => '佩奇'];
  2. print_r(array_values($pets));
  3. // 输出 Array ( [0] => 旺财 [1] => 花花 [2] => 佩奇 )

3.4 array_search():找到数组中含有指定值得键名并返回,若找不到,返回false

  1. $pets = ['dog' => '旺财', 'cat' => '花花', 'pig' => '佩奇'];
  2. echo array_search('佩奇',$pets) ; // 输出 pig
  3. var_dump(array_search('佩奇22',$pets)) ; // 返回false
  4. // 该函数有第三个值,默认是false,若是true,表示搜索的值数据和类型都要一致,如下:
  5. $nums = ['a' => 10, 'b' => '10', 'c' => '10' ];
  6. // echo array_search(10,$nums,true); // 输出 a
  7. // echo array_search('10',$nums,true); // 输出 b ,表示只搜索一次,搜到了就返回了
  8. // 可以利用循环来搜索
  9. foreach( $nums as $keys => $values ){
  10. if($values === '10')
  11. echo $keys;
  12. } // 输出 bc
  • 与键相关的

3.5 array_keys():获取数组中的所有键名

  1. $cars = ['BMW' => 'X6', '丰田' => '卡罗拉', '长安' => '逸动', '现代' => '索拉塔'];
  2. // array_keys:获取数组中的所有键名,并返回一个新的数组
  3. print_r(array_keys($cars));
  4. // 输出 Array ( [0] => BMW [1] => 丰田 [2] => 长安 [3] => 现代 )

3.6 key():返回当前指针位置的键名

  1. $cars = ['BMW' => 'X6', '丰田' => '卡罗拉', '长安' => '逸动', '现代' => '索拉塔'];
  2. // key():返回当前指针位置的键名,默认从0开始
  3. echo key($cars); // 输出 BMW
  4. // next():指针下移
  5. next($cars);
  6. echo key($cars); // 输出 丰田

总结:

数组函数并未全部举例,数组函数可以相互嵌套,需要灵活运用,剩下的其余函数还需课下多多书写,加深印象

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议