zoukankan      html  css  js  c++  java
  • 007——数组(七)通过回调函数得到数组交集或差集

    <?php
    /**
     *7.通过回调函数得到数组交集或差集
     */
    
    /*array_udiff()比较2个或多个数组的差值,只比较值,不进行键名的比较
     * */
    /*$array1 = array("a" => "a", "b" => 'b', "c" => "c1");
    $array2 = array("a" => "a", "b" => 'b', "c" => "c");
    function func($v1, $v2)
    {
        if ($v1 === $v2){
            return 0;
        }elseif ($v1>$v2){
            return 1;
        }else{
            return -1;
        };
    }
    $array3 = array_udiff($array1, $array2, "func");
    print_r($array3);//输出:Array ( [c] => c1 )*/
    
    /*array_udiff_assoc() 通过回调函数,比较2个或多个数组的键名或键值的差值。
     * */
    /*$array1 = array("a1" => "a", "b" => 'b1', "c" => "c");
    $array2 = array("a" => "a", "b" => 'b', "c" => "c");
    function fun1($v1,$v2){
        if ($v1 === $v2){
            return 0;
        }elseif ($v1>$v2){
            return 1;
        }else{
            return -1;
        };
    }
    $array3=array_udiff_assoc($array1,$array2,"fun1");
    print_r($array3);//输出:Array ( [a1] => a [b] => b1 )*/
    
    /*array_udiff_uassoc() 通过回调函数,比较多个数组的键名和键值,要定义2个回调函数来处理键名和键值的比较
     * */
    /*$array1 = array("a1" => "a", "b" => 'b1', "c" => "c");
    $array2 = array("a" => "a", "b" => 'b', "c" => "c");
    function func_date($v1,$v2){
        if ($v1 === $v2){
            return 0;
        }elseif ($v1>$v2){
            return 1;
        }else{
            return -1;
        };
    }
    
    function func_key($v1,$v2){
        if ($v1 === $v2){
            return 0;
        }elseif ($v1>$v2){
            return 1;
        }else{
            return -1;
        };
    }
    $array3=array_udiff_uassoc($array1,$array2,"func_date","func_key");
    print_r($array3);//输出:Array ( [a1] => a [b] => b1 )*/
    
    /*array_uintersect() 得到多个数组中键值的交集,通过回调函数:
     * */
    /*$array1 = array("a" => "a1", "b" => 'b1', "c" => "c");
    $array2 = array("a" => "a1", "b" => 'b', "c" => "c");
    function func5($v1, $v2)
    {
        if ($v1 === $v2) {
            return 0;
        } elseif ($v1 >$v2) {
            return 1;
        } else {
            return -1;
        };
    }
    
    $array3 = array_uintersect($array1, $array2, "func5");
    print_r($array3);//输出:Array ( [a] => a1 )*/
    
    /*array_uintersect_assoc() 得到多个数组中的键值的交集,通过函数,键名也参与比较
     * */
    /*$array1 = array("a" => "a", "b" => 'b1', "c" => "c");
    $array2 = array("a" => "a", "b" => 'b', "c1" => "c");
    function func6($v1, $v2)
    {
        if ($v1 === $v2) {
            return 0;
        } elseif ($v1 > $v2) {
            return 1;
        } else {
            return -1;
        };
    }
    
    $array3 = array_uintersect_assoc($array1, $array2, "func6");
    print_r($array3);//输出:Array ( [a] => a )*/
    
    
    /*array_uintersect_uassoc()  通过2个回调函数,对多个数组的键名和键值进行比较,得到多个数组的交集元素。
     * */
    $array1 = array("a" => "a", "b" => 'b1', "c" => "c");
    $array2 = array("a" => "a", "b" => 'b', "c1" => "c");
    function func_data($v1, $v2)
    {
        if ($v1 === $v2) {
            return 0;
        } elseif ($v1 > $v2) {
            return 1;
        } else {
            return -1;
        };
    }
    function func_key($v1, $v2)
    {
        if ($v1 === $v2) {
            return 0;
        } elseif ($v1 > $v2) {
            return 1;
        } else {
            return -1;
        };
    }
    $array3 = array_uintersect_uassoc($array1, $array2, "func_data","func_key");
    print_r($array3);//输出:Array ( [a] => a )
    

      

  • 相关阅读:
    扒皮下音悦台的“返回顶部”图标效果
    扒皮下京东首页楼层图标的动画效果实现方式
    总结前端开发中的一些特殊规范
    用JS识别各版本浏览器
    各主流浏览器内核介绍
    CSS百分比定义高度的冷知识
    图解js中常用的判断浏览器窗体、用户屏幕可视区域大小位置的方法
    从一个简单例子来理解js引用类型指针的工作方式
    仿京东首页商品分类底部色标随鼠标移动特效
    知乎网首页一个延时交互的小思路
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/7824689.html
Copyright © 2011-2022 走看看