Как объединить два массива (один со строками => пары значений и другой с парами значений int =>), сохраняя ключи string / int? Ни один из них никогда не будет перекрываться (потому что у одного есть только строки, а у другого есть только целые числа).
Вот мой текущий код (который не работает, потому что array_merge переиндексирует массив с помощью целых ключей):
// get all id vars by combining the static and dynamic $staticIdentifications = array( Users::userID => "USERID", Users::username => "USERNAME" ); // get the dynamic vars, formatted: varID => varName $companyVarIdentifications = CompanyVars::getIdentificationVarsFriendly($_SESSION['companyID']); // merge the static and dynamic vars (*** BUT KEEP THE INT INDICES ***) $idVars = array_merge($staticIdentifications, $companyVarIdentifications);
Вы можете просто «добавить» массивы:
>> $a = array(1, 2, 3); array ( 0 => 1, 1 => 2, 2 => 3, ) >> $b = array("a" => 1, "b" => 2, "c" => 3) array ( 'a' => 1, 'b' => 2, 'c' => 3, ) >> $a + $b array ( 0 => 1, 1 => 2, 2 => 3, 'a' => 1, 'b' => 2, 'c' => 3, )
Учитывая, что у вас есть
$replaced = array('1' => 'value1', '4' => 'value4'); $replacement = array('4' => 'value2', '6' => 'value3');
Выполнение $merge = $replacement + $replaced;
выведет:
Array('1' => 'value1', '4' => 'value2', '6' => 'value3');
Первый массив из суммы будет иметь значения в конечном выходе.
Выполнение $merge = $replaced + $replacement;
выведет:
Array('1' => 'value1', '4' => 'value4', '6' => 'value3');