组合2个不同长度的阵列

时间:2011-01-22 17:03:20

标签: php arrays

我有两个不同数量的数组,我正在使用的例子是一个是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 [] = ...

任何建议都会有所帮助,

谢谢!

3 个答案:

答案 0 :(得分:13)

function array_combine2($arr1, $arr2) {
    $count = min(count($arr1), count($arr2));
    return array_combine(array_slice($arr1, 0, $count), array_slice($arr2, 0, $count));
}

答案 1 :(得分:11)

这是一个单行:

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

答案 2 :(得分:-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);