2011-01-22 3 views
5

У меня есть два массива, каждый из различных графов, пример я работаю там же 132 в одном и 136 в другой,Объединить 2 массивы различной длины

мне нужно 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-comb]: Оба параметра должны иметь равное количество элементов на линии, которая начинается с $ arr4 [] = ...

Любые советы помогут,

спасибо!

ответ

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

спас мое время идеальное решение –

-2

здесь идеально подходит функция в самом 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); 
7

Вот один вкладыш:

$res = array_combine(array_intersect_key($arr1, $arr2), array_intersect_key($arr2, $arr1)); 
Смежные вопросы