zoukankan      html  css  js  c++  java
  • array_intersect、array_intersect_key、array_intersect_assoc、array_intersect_ukey、array_intersect_uassoc 的用法

    <?php
    
    // array_intersect 的用法是返回一个关联数组(键是第一个参数数组的键),
    //      该数组包含了所有在 $array1 中同时也出现在其他参数数组中的值
    
    // 下面的 0,1 键是手动加上去的, 可以去掉, 默认就是 0,1
    $array1 = [
        "a" => "green",
        0 => "red",
        1 => "blue",
        2 => 'white'
    ];
    $array2 = [
        "b" => "green",
        "yellow",
        "red",
        'white',
    ];
    var_dump($array1, $array2);
    
    // 只比较值 echo "array_intersect($array1, $array2): "; var_dump(array_intersect($array1, $array2)); echo "array_intersect_key($array1, $array2): "; // 只比较键, 只返回键相同的对应数组项(值是第一个参数数组的值), 反正都是返回第一个参数数组里面的项 var_dump(array_intersect_key($array1, $array2)); echo "array_intersect_assoc($array1, $array2): "; // 同时比较键值, 可以看做是融合了 array_intersect、array_intersect_key 的功能 // 只有键值对同时相同的时候才会返回 var_dump(array_intersect_assoc($array1, $array2)); function compare($key1, $key2) { if ($key1 == $key2) { // 这里使用 === 的时候, array_intersect_ukey 返回的数组中没有 key 为 0 的项 return 0; } return ($key1 > $key2) ? 1 : -1; } echo "array_intersect_ukey($array1, $array2): "; // array_intersect_ukey 使用自定义函数进行键比较 // !!! 使用该方法需要注意的是, 比较的数组不是关联数组的时候可能会导致错误(上面的例子中 'a' == 0 其实是 true) var_dump(array_intersect_ukey($array1, $array2, 'compare')); echo "array_intersect_uassoc($array1, $array2): "; // array_intersect_uassoc 使用自定义函数进行键比较 // 同时比较键值, 值的比较使用内置函数 var_dump(array_intersect_uassoc($array1, $array2, 'compare'));

      

    输出:

    array(4) {
      ["a"]=>
      string(5) "green"
      [0]=>
      string(3) "red"
      [1]=>
      string(4) "blue"
      [2]=>
      string(5) "white"
    }
    array(4) {
      ["b"]=>
      string(5) "green"
      [0]=>
      string(6) "yellow"
      [1]=>
      string(3) "red"
      [2]=>
      string(5) "white"
    }
    array_intersect($array1, $array2): 
    array(3) {
      ["a"]=>
      string(5) "green"
      [0]=>
      string(3) "red"
      [2]=>
      string(5) "white"
    }
    array_intersect_key($array1, $array2): 
    array(3) {
      [0]=>
      string(3) "red"
      [1]=>
      string(4) "blue"
      [2]=>
      string(5) "white"
    }
    array_intersect_assoc($array1, $array2): 
    array(1) {
      [2]=>
      string(5) "white"
    }
    array_intersect_ukey($array1, $array2): 
    array(2) {
      [1]=>
      string(4) "blue"
      [2]=>
      string(5) "white"
    }
    array_intersect_uassoc($array1, $array2): 
    array(1) {
      [2]=>
      string(5) "white"
    }
    

      

  • 相关阅读:
    【链接】idea没有svn
    移动端适配解决方案
    项目中多个文件引入同一份公共样式less文件导致编译打包后有多份样式
    2020最新编辑器集成eslint、prettier、stylelint,git提交预检查代码配置
    eslint+prettier学习
    artTempate模版继承父模版之后再引入子模版不生效?
    iOS底层原理开篇
    iOS应用千万级架构:安全与加密
    使用RabbitMQ实现延迟任务
    JAVA三元运算符空指针引用的坑
  • 原文地址:https://www.cnblogs.com/eleven24/p/8808043.html
Copyright © 2011-2022 走看看