У меня есть два массива, каждый из которых имеет разные значения, пример, с которым я работаю, есть 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-comb]: оба параметра должны иметь равное количество элементов в строке, которая начинается с $ arr4 [] = …
Любой совет поможет,
благодаря!
function array_combine2($arr1, $arr2) { $count = min(count($arr1), count($arr2)); return array_combine(array_slice($arr1, 0, $count), array_slice($arr2, 0, $count)); }
Вот однострочный:
$res = array_combine(array_intersect_key($arr1, $arr2), array_intersect_key($arr2, $arr1));
вот идеальная функция в самом 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);