• PHP求并集,交集,差集


    PHP求并集,交集,差集

    一、总结

    一句话总结:在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff().

    array_merge() array_intersect() array_diff()

    1、php中如何求并集?

    array_merge() +

    计算数组的合并 array_merge与“+”的区别

    array_merge() 函数把两个或多个数组合并为一个数组。

    如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的),如果数组是数字索引的,则键名会以连续方式重新索引。

    注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引.代码如下:

    1. $a = array(1 => 'a', 'b', 'c');
    2. $b = array(1 => 'aa', 2, 'c');
    3. $union = array_merge($a, $b);
    4. $plus = $a + $b;
    5. print_r($union);
    6. print_r($plus);
    7. //结果依次为:
    8. Array
    9. {
    10. [0]=> a
    11. [1]=> b
    12. [2]=> c
    13. [3]=> aa
    14. [4]=> 2
    15. [5]=> c
    16. }
    17. Array
    18. (
    19. [1] => a
    20. [2] => b
    21. [3] => c
    22. )

    要合并的两个数组中有相同的字符串键的时候,使用array_merge()会覆盖掉原来的值,而使用“+”合并数组则会和用“+”号合并数组相同数字键一样把最先出现的值作为最终结果返回,如下例:

    1. $a2 = array('str' => 'a', 'b', 'c');
    2. $b2 = array('str' => 'aa', 2, 'c');
    3. $union2 = array_merge($a2, $b2);
    4. $plus2 = $a2 + $b2;
    5. print_r($union2);
    6. print_r($plus2);
    7. //结果依次为:
    8. Array
    9. (
    10. [str] => aa
    11. [0] => b
    12. [1] => c
    13. [2] => 2
    14. [3] => c
    15. )
    16. Array
    17. (
    18. [str] => a
    19. [0] => b
    20. [1] => c
    21. )

    注:如果想用array_merge合并两个数组,返回结果可能还会有相同的元素,这时候可以用array_unique()把相同的元素去掉

    2、php合并 array_merge与“+”的区别是什么?

    + 合并索引

    array_merge() 函数把两个或多个数组合并为一个数组。

    如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的),如果数组是数字索引的,则键名会以连续方式重新索引。

    注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引.代码如下:

    1. $a = array(1 => 'a', 'b', 'c');
    2. $b = array(1 => 'aa', 2, 'c');
    3. $union = array_merge($a, $b);
    4. $plus = $a + $b;
    5. print_r($union);
    6. print_r($plus);
    7. //结果依次为:
    8. Array
    9. {
    10. [0]=> a
    11. [1]=> b
    12. [2]=> c
    13. [3]=> aa
    14. [4]=> 2
    15. [5]=> c
    16. }
    17. Array
    18. (
    19. [1] => a
    20. [2] => b
    21. [3] => c
    22. )

    要合并的两个数组中有相同的字符串键的时候,使用array_merge()会覆盖掉原来的值,而使用“+”合并数组则会和用“+”号合并数组相同数字键一样把最先出现的值作为最终结果返回,如下例:

    1. $a2 = array('str' => 'a', 'b', 'c');
    2. $b2 = array('str' => 'aa', 2, 'c');
    3. $union2 = array_merge($a2, $b2);
    4. $plus2 = $a2 + $b2;
    5. print_r($union2);
    6. print_r($plus2);
    7. //结果依次为:
    8. Array
    9. (
    10. [str] => aa
    11. [0] => b
    12. [1] => c
    13. [2] => 2
    14. [3] => c
    15. )
    16. Array
    17. (
    18. [str] => a
    19. [0] => b
    20. [1] => c
    21. )

    注:如果想用array_merge合并两个数组,返回结果可能还会有相同的元素,这时候可以用array_unique()把相同的元素去掉

    3、php中如何求交集?

    array_intersect()

    array_intersect() 函数返回两个或多个数组的交集数组,结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变,注释:仅有值用于比较,代码如下:

    1. $a = array('jpg','png','gif','bmp');
    2. $b = array('JPG','txt','docx','bmp');
    3. $intersection = array_intersect($a, $b);

    还可以通过函数,获取自己想要的(比如元素不区分大小写),代码如下:

    1. $intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
    2. print_r($intersection);
    3. print_r($intersection2);
    4. //结果依次为:
    5. Array
    6. (
    7. [3] => bmp
    8. )
    9. Array (
    10. [0] => jpg
    11. [3] => bmp
    12. )

    4、php中如何求差集?

    array_diff()

    计算数组的差集,代码如下:

    1. $old = array('jpg','png','gif','bmp');
    2. $new = array('JPG','txt','docx','bmp');
    3. $difference = array_diff($old, $new);

    注:返回结果的元素包含$old的元素,不包括$new的元素

    print_r($difference);

    结果为:

    1. Array
    2. (
    3. [0] => jpg
    4. [1] => png
    5. [2] => gif
    6. )

    也可以用函数先进行处理,再计算差集

    array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值,在返回的数组中,键名保持不变。

    语法:array_diff(array1,array2,array3...)

    代码如下:

    1. $difference = array_diff(array_map('strtolower',$old),
    2. array_map('strtolower',$new));


     

    二、PHP数组的几个操作,求并集,交集,差集,数组与字符串的相互转换及数组去重

    参考:PHP数组的几个操作,求并集,交集,差集,数组与字符串的相互转换及数组去重 - shao.bing的专栏 - CSDN博客
    https://blog.csdn.net/shaobingj126/article/details/51814726

    在php中如果我想要对两个数组进行如并集、交集和差集操作,我们可直接使用php自带的函数来操作如array_merge(),array_intersect(),array_diff().

    计算数组的合并 array_merge与“+”的区别

    array_merge() 函数把两个或多个数组合并为一个数组。

    如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的),如果数组是数字索引的,则键名会以连续方式重新索引。

    注释:如果仅仅向 array_merge() 函数输入了一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引.代码如下:

    1. $a = array(1 => 'a', 'b', 'c');
    2. $b = array(1 => 'aa', 2, 'c');
    3. $union = array_merge($a, $b);
    4. $plus = $a + $b;
    5. print_r($union);
    6. print_r($plus);
    7. //结果依次为:
    8. Array
    9. {
    10. [0]=> a
    11. [1]=> b
    12. [2]=> c
    13. [3]=> aa
    14. [4]=> 2
    15. [5]=> c
    16. }
    17. Array
    18. (
    19. [1] => a
    20. [2] => b
    21. [3] => c
    22. )

    要合并的两个数组中有相同的字符串键的时候,使用array_merge()会覆盖掉原来的值,而使用“+”合并数组则会和用“+”号合并数组相同数字键一样把最先出现的值作为最终结果返回,如下例:

    1. $a2 = array('str' => 'a', 'b', 'c');
    2. $b2 = array('str' => 'aa', 2, 'c');
    3. $union2 = array_merge($a2, $b2);
    4. $plus2 = $a2 + $b2;
    5. print_r($union2);
    6. print_r($plus2);
    7. //结果依次为:
    8. Array
    9. (
    10. [str] => aa
    11. [0] => b
    12. [1] => c
    13. [2] => 2
    14. [3] => c
    15. )
    16. Array
    17. (
    18. [str] => a
    19. [0] => b
    20. [1] => c
    21. )

    注:如果想用array_merge合并两个数组,返回结果可能还会有相同的元素,这时候可以用array_unique()把相同的元素去掉

    计算数组的交集

    array_intersect() 函数返回两个或多个数组的交集数组,结果数组包含了所有在被比较数组中,也同时出现在所有其他参数数组中的值,键名保留不变,注释:仅有值用于比较,代码如下:

    1. $a = array('jpg','png','gif','bmp');
    2. $b = array('JPG','txt','docx','bmp');
    3. $intersection = array_intersect($a, $b);

    还可以通过函数,获取自己想要的(比如元素不区分大小写),代码如下:

    1. $intersection2 = array_intersect(array_map('strtolower',$a), array_map('strtolower',$b));
    2. print_r($intersection);
    3. print_r($intersection2);
    4. //结果依次为:
    5. Array
    6. (
    7. [3] => bmp
    8. )
    9. Array (
    10. [0] => jpg
    11. [3] => bmp
    12. )

    计算数组的差集,代码如下:

    1. $old = array('jpg','png','gif','bmp');
    2. $new = array('JPG','txt','docx','bmp');
    3. $difference = array_diff($old, $new);

    注:返回结果的元素包含$old的元素,不包括$new的元素

    print_r($difference);

    结果为:

    1. Array
    2. (
    3. [0] => jpg
    4. [1] => png
    5. [2] => gif
    6. )

    也可以用函数先进行处理,再计算差集

    array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值,在返回的数组中,键名保持不变。

    语法:array_diff(array1,array2,array3...)

    代码如下:

    1. $difference = array_diff(array_map('strtolower',$old),
    2. array_map('strtolower',$new));

    数组转换为字符串:

    <?php
    $arr = array('Hello','World!','I','love','Shanghai!');
    echo implode(" ",$arr);
    ?>

    字符串转换为数组:

    <?php
    $str="1432532 ,4444";

    $arr = explode(",",$str);
    echo count($arr)."</br>";

    print_r($arr);
    ?>

    数组元素值去重

    <?php
    $a=array("a"=>"red","b"=>"green","c"=>"red");
    print_r(array_unique($a));
    ?>

    针对有空格的字符串转换成无空格的字符串

    <?php
    $str="1432532 ,67878";

    $arr = explode(",",$str);
    //echo count($arr)."</br>";

    $str_u='';

    for($i=0;$i<count($arr);$i++)
    {

    $str_u .=trim($arr[$i]).',';

    }
    echo $str_u;

    ?>

     
  • 相关阅读:
    jdk动态代理
    mysql-索引方案
    闭包的有点以及出现的内存泄露2016/4/12
    表单2016/4/8
    cursor
    同一个事件绑定不同的函数
    a:link visited hover active
    对于属性操作,加入属性,移除属性
    offset获取位置
    清除浮动6中方法
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10226009.html
Copyright © 2020-2023  润新知