博客列表 >php学习笔记(数组函数_差集和交集的运算汇总)

php学习笔记(数组函数_差集和交集的运算汇总)

庖丁
庖丁原创
2021年01月31日 17:03:35704浏览

计算数组的差集

1.1 array_diff()

  1. //arry_diff(),比较的是数组成员的值
  2. //该函数只能对多维数组的第一维进行差值比较。
  3. //返回值是一个数组,返回第一个参数数组有但是后面的参数数组没有的差值
  4. $a = [1, 2, 3, 4, 5, 6, 7];
  5. $b = [1, 2];
  6. $c = [5, 6];
  7. var_dump(array_diff($a, $b, $c));

1.2 arry_diff_key()

  1. //与arry_diff()不同的是比较的是键名
  2. $a = ['name' => '张三', 'age' => 25, 'xingbie' => '男'];
  3. $b = ['age' => 28];
  4. echo '<hr>';
  5. var_dump(array_diff_key($a, $b));

1.3 array_diff_ukey()

  1. //与arry_diff_key()不同的是用用户提供的回调函数计算键名,可以对键名进行一些运算后再求数组差值
  2. function ukey($a1,$b1)
  3. {
  4. return ($a1.'1') <=> $b1;
  5. }
  6. $a = ['name' => '张三', 'age' => 25, 'xingbie' => '男'];
  7. $b = ['name1' => '张三','age1' =>25];
  8. echo '<hr>';
  9. var_dump(array_diff_ukey($a, $b,'ukey'));

1.4 array_diff_assoc()

  1. //array_diff_assoc(),既比较键名也比较键值,要求键值对完全相同的才进行减去
  2. //相当于 if(键名比较 = false || 键值比较 = false) return 数组成员;
  3. $a = ['name' => '张三', 'age' => 25, 'femail' => '女'];
  4. $b = ['name' => '李四', 'ages' => 25, 'femail' => '女'];
  5. echo '<hr>';
  6. var_dump(array_diff_assoc($a, $b));

1.5 array_diff_uassoc()

  1. //与array_diff_assoc()不同的是用用户提供的回调函数计算键名,可以对键名进行一些运算后再求数组差值
  2. $a = ['sname' => '张三', 'sage' => 25, 'sfemail' => '女'];
  3. $b = ['name' => '张三', 'femail'=>'女'];
  4. function num($a1,$b1)
  5. {
  6. return $a1 <=> ('s'.$b1);
  7. }
  8. echo '<hr>';
  9. var_dump(array_diff_uassoc($a, $b,'num'));

计算数组的交集

2.1 array_intersect()

  1. //用于比较两个(或更多个)数组的键值,并返回交集。
  2. //返回的是第一个参数数组中与其他参数数组共有的成员。
  3. $a = [1, 2, 3, 4, 5, 6, 7];
  4. $b = [1, 2];
  5. $c = [1, 2];
  6. var_dump(array_intersect($a, $b, $c));

2.2 array_intersect_key()

  1. //与array_intersect()不同的是比较的是键名
  2. $a = ['name' => '张三', 'age' => 25, 'xingbie' => '男'];
  3. $b = ['age' => 28];
  4. echo '<hr>';
  5. var_dump(array_intersect_key($a, $b));

2.3 array_intersect_ukey()

  1. //与arry_intersect_key()不同的是用用户提供的回调函数计算键名,可以对键名进行一些运算后再求数组交集
  2. function ukey($a1,$b1)
  3. {
  4. return ($a1.'1') <=> $b1;
  5. }
  6. $a = ['name' => '张三', 'age' => 25, 'xingbie' => '男'];
  7. $b = ['name1' => '张三','age1' =>25];
  8. echo '<hr>';
  9. var_dump(array_intersect_ukey($a, $b,'ukey'));

2.4 array_intersect_assoc()

  1. //array_intersect_assoc(),既比较键名也比较键值,要求键值对完全相同的才算符合交集条件
  2. $a = ['name' => '张三', 'age' => 25, 'femail' => '女'];
  3. $b = ['name' => '李四', 'ages' => 25, 'femail' => '女'];
  4. echo '<hr>';
  5. var_dump(array_intersect_assoc($a, $b));

2.5 array_intersect_uassoc()

  1. //与array_intersect_assoc()不同的是用用户提供的回调函数计算键名,可以对键名进行一些运算后再求数组交集
  2. $a = ['sname' => '张三', 'sage' => 25, 'sfemail' => '女'];
  3. $b = ['name' => '张三', 'femail'=>'女'];
  4. function num($a1,$b1)
  5. {
  6. return $a1 <=> ('s'.$b1);
  7. }
  8. echo '<hr>';
  9. var_dump(array_intersect_uassoc($a, $b,'num'));

自己查手册学习感悟:1、不知道应用场景,很难记得住。2、理解不够透彻,还是听老师的课更容易掌握。

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