in_array 函数的第一个参数是数组 及 此数组是另一个数组子集的判断

函数in_array 的第一个参数是数组

我遇见的问题,第一个参数$a是数组

        $a                =    [3,'f','e'];

        $b                =    [3,5,'d','f','e'];

        var_dump(in_array($a ,$b));

打印出:

        bool(false)

第一个参数是单值数据

        var_dump(in_array('f' ,$b));

这时,打印出:

        bool(true)

直到查阅到:https://bbs.****.net/topics/390611609 的回复,才明白

        in_array() 的第一个参数应该是 单值数

再确认,http://docs.php.net/manual/zh/function.in-array.php,某个值

        in_array 函数的第一个参数是数组 及 此数组是另一个数组子集的判断


数组 $a 是 数组 $b 的子集

以下取经自:    http://www.jb51.net/article/119956.htm

foreach循环遍历:

        foreach($a as $v){
            if(in_array($v,$b)){
                 $flag    =    0;
            }
        }
        if($flag){
            echo    "$ a 是 $ b的子集。";
        }else{
            echo    "$ a 不是 $ b的子集!";
        }


array_diff  (差集)的使用:

        in_array 函数的第一个参数是数组 及 此数组是另一个数组子集的判断


        array_diff 的返回值:指在数组 $a 中有,但在数组 $b 中没有的数组元素。·

        if( !array_diff( $a ,$b ) ){    #这里取反
            echo     "数组 $ a 是数组 $ b 的子集。";
        }


array_intersect  (交集)的使用:    

       in_array 函数的第一个参数是数组 及 此数组是另一个数组子集的判断

        array_intersect 的返回值:指的是在数组 $a 中的所有元素,同时在其他数组中也拥有的元素组成的数组

        if ($a == array_intersect($a, $b)) {
            echo    "数组$ a 是 数组 $ b 的子集。";
        }