【问题标题】:Combine 2 Arrays of Different Lengths [duplicate]组合2个不同长度的数组[重复]
【发布时间】:2016-02-15 05:48:21
【问题描述】:

我有两个数组,每个数组都有不同的计数,我正在使用的示例是一个有 132 个,另一个有 136 个,

我需要array_combine() 他们(将第一个设为键,第二个设为值)。在我的示例中,我想保留 132 个键/值对并删除没有对应匹配的额外 4 个。

我目前有这个功能(我在 php.net 的 array_combine() 的文档中找到),但它不起作用:

function array_combine2($arr1, $arr2) {
            $count1 = count($arr1);
            $count2 = count($arr2);
            $numofloops = $count2/$count1;

            $i = 0;
            while($i < $numofloops){
                $arr3 = array_slice($arr2, $count1*$i, $count1);
                $arr4[] = array_combine($arr1,$arr3);
                $i++;
            }

            return $arr4;
     }

我一直在回来

警告:array_combine() [function.array-combine]:两个参数 在以开头的行上应该有相同数量的元素 $arr4[] = ...

任何建议都会有所帮助,

谢谢!

【问题讨论】:

    标签: php arrays


    【解决方案1】:
    function array_combine2($arr1, $arr2) {
        $count = min(count($arr1), count($arr2));
        return array_combine(array_slice($arr1, 0, $count), array_slice($arr2, 0, $count));
    }
    

    【讨论】:

    • 完美解决方案节省了我的时间
    【解决方案2】:

    这是一个单行:

    $res = array_combine(array_intersect_key($arr1, $arr2), array_intersect_key($arr2, $arr1));
    

    【讨论】:

      【解决方案3】:

      这里有个完美的 PHP 函数,叫做“array_combine()”

        /*-----------------------------------------------------------
        | Parameter            | Description                        |
        -------------------------------------------------------------
        | array1  Required.   | An array, specifying the keys       |
        -------------------------------------------------------------
        | array2  Required.   | An array, specifying the values     |
        -----------------------------------------------------------*/
      
      $array1 = ('John','Mark','Ester');
      $array2 = (1111,2222);
      
      // if some elements dont exists, "add" them...
      if(count($array1) != count($array2))
      {
        foreach($array as $key => $value):
            if(!isset($array2[$key]) $array2[$key] = NULL;
        endforeach;
      }
      
      // now, combine them in classic way...
      $combined = array_combine($array1,$array2);
      

      【讨论】:

        猜你喜欢
        • 2013-07-17
        • 2018-09-14
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-27
        • 1970-01-01
        相关资源
        最近更新 更多