博客列表 >举例10个函数进行编程-php-18课7.13

举例10个函数进行编程-php-18课7.13

希望
希望原创
2020年07月15日 16:05:33734浏览

一、键和值


1. array_keys:拿键

  1. $arr = ['id' => 1, 'name' => 'admin', 'email' => '123@qq.com'];
  2. print_r(array_keys($arr));

2. array_values:拿值

  1. $arr = [0 => 1, 5 => 8, 2 => 'php', 'id' => 'html', 12 => 15, 15];
  2. print_r(array_values($arr));

3. array_key_exists:判断键在不在数组中?

  1. echo array_key_exists('email', $arr) ? '存在' : '不存在';

4. in_array:查询某个值在不在数组中?

  1. echo in_array('php1', $arr) ? '有' : '没有';

5. array_key_first/last:拿第一个键,最后一个键

  1. echo array_key_first($arr);
  2. echo array_key_last($arr);

6. array_search:根据值找键,如果这个值不存在,返回布尔false

  1. var_dump(array_search('php', $arr));

7. array_unique:把重复的值删除,有两个15重复的

  1. print_r(array_unique($arr));

8. array_sum:求和

  1. $arr = [5, 8, 10];
  2. echo array_sum($arr);
  3. // 把字符串也转成数值了
  4. echo "<hr>";
  5. $arr = [5, 8, 10, '555'];
  6. echo array_sum($arr);
  7. // 字符串开头是字母,就忽略了
  8. echo "<hr>";
  9. $arr = [5, 8, 10, 'p555'];
  10. echo array_sum($arr);

二、栈和队


1. array_pop:最后的先出来,在栈尾部增删

  1. $stack = [];
  2. echo array_push($stack, 10, 20, 50);
  3. print_r($stack);
  4. echo array_pop($stack);
  5. echo array_pop($stack);
  6. echo array_pop($stack);
  7. var_dump(array_pop($stack));

2. array_shift:在栈头部增删

  1. echo array_unshift($stack, 10, 20, 50);
  2. print_r($stack);
  3. echo array_shift($stack);
  4. echo array_shift($stack);
  5. echo array_shift($stack);

3. array_push:尾部进队; array_shift:头部出队

  1. $queue = [];
  2. array_push($queue, 10, 40, 60);
  3. print_r($queue);
  4. echo array_shift($queue);
  5. echo array_shift($queue);
  6. echo array_shift($queue);

4. array_unshift:头部进队; array_pop:尾部出队

  1. array_unshift($queue, 1, 3, 5);
  2. print_r($queue);
  3. echo array_pop($queue);
  4. echo array_pop($queue);
  5. echo array_pop($queue);

三、键与值排序


1. asort:值排序,但是键不动,值先从字母顺序开始; sort:默认按值升序,键重组

键与值排序

  1. $arr = [10, 12, 15, 20, 'b', 't', 55, 66];
  2. asort($arr);
  3. print_r($arr);
  1. $arr = [10, 12, 15, 20, 'b', 't', 55, 66];
  2. sort($arr);
  3. print_r($arr);

2. ksort:按键排序,字母顺序,升序排; krsort:键降序

键升序降序排列

  1. $arr = ['d' => 50, 'b' => 12, 'p' => 15];
  2. ksort($arr);
  3. print_r($arr);
  1. $arr = ['d' => 50, 'b' => 12, 'p' => 15];
  2. krsort($arr);
  3. print_r($arr);

3. natsort:图片名字从小到大排升序

自然排升序

  1. $arr = ['img1.jpg', 'img9.jpg', 'img2.jpg', 'img5.jpg'];
  2. print_r($arr);
  3. natsort($arr);
  4. print_r($arr);

四、array_slice:从数组中取出一部分元素


1. 取前2个,从负3开始取

  1. $stu = ['id' => 2, 'name' => '小芳', 'age' => 25, 'course' => 'php', 'grade' => 90];
  2. $res = array_slice($stu, 0);
  3. // 只取前2个
  4. $res = array_slice($stu, 0, 2);
  5. $res = array_slice($stu, 1, 3);
  6. // 从负3开始取
  7. $res = array_slice($stu, -3);

2. array_splice:新增两个

  1. $arr = [2, 5, 10, 42, 12, 75, 60];
  2. $res = array_splice($arr, 2, 0, [777, 666]);
  3. print_r($res);
  4. print_r($arr);

五、array_combine:数组合并


数组合并

  1. $keys = ['type', 'host', 'dbname', 'username', 'password'];
  2. $values = ['mysql', 'localhost', 'phpedu', 'root', 'root'];
  3. print_r(array_combine($keys, $values));

六、回调

回调

1. array_filter():过滤,简单写法,过滤空值,只返回标量

  1. $arr = [10, 'php', true, [4, 5, 6], (new class{}), [], null, false, '', 0, '0'];
  2. $res = array_filter($arr, function ($item) {
  3. return is_scalar($item);
  4. });
  5. print_r($res);

2. array_map():不会区分真假,全部返回新数组

  1. $arr = ['php', [1, 2, 3], (new class{public $name = '手机'; public $price = 8999;}), 10, 30];
  2. $res = array_map(function ($item) {
  3. // 判断当前元素是对象还是数组?gettype
  4. // object是对象,如果是对象,就获取属性
  5. // array是数组,如果是数组,就进行拼接,转为字符串,输出
  6. switch (gettype($item)) {
  7. case 'object':
  8. $item = get_object_vars($item);
  9. $item = implode(', ', $item);
  10. break;
  11. case 'array':
  12. $item = implode(', ', $item);
  13. }
  14. return $item;
  15. }, $arr);
  16. print_r($res);

3. compact():将一组变量组装成关联数组

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