Как можно объединить два массива (один с парами строка => значение, а другой с парами значение =>), сохраняя ключи строка / 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);
php
arrays
array-merge
Garrett
источник
источник
array( 123 => "VALUE123" )
наarray( 0 => "VALUE123" )
assert(array(0=>0,1=>1) === array_merge(array('9'=>0), array('9'=>1)))
Ответы:
Вы можете просто «добавить» массивы:
источник
print_r([2 => 56] + [2 => 30]);
приносит свои плодыArray ( [2] => 56 )
. Таким образом, он держит левую сторону, как указано. Это , как в PHP 7.1.19, работает на repl.it .Учитывая, что у вас есть
Делать
$merge = $replacement + $replaced;
будет выводить:Первый массив из суммы будет иметь значения в конечном выводе.
Делать
$merge = $replaced + $replacement;
будет выводить:источник
$allValues += $newValues;
.$merge = $replacement + $replaced;
будет выводить:Array ( [4] => value2 [6] => value3 [1] => value1 )
Хотя этот вопрос довольно старый, я просто хочу добавить еще одну возможность слияния при сохранении ключей.
Помимо добавления ключа / значений к существующим массивам, используя
+
знак, который вы можете сделатьarray_replace
.Результат будет:
Те же ключи будут перезаписаны последним массивом.
Существует также метод
array_replace_recursive
, который делает это и для подмассивов.Живой пример на 3v4l.org
источник
Два массива можно легко добавить или объединить, не изменяя их первоначальное индексирование с помощью оператора + . Это очень поможет в выпадающем списке laravel и codeigniter.
Выход будет:
источник
Попробуйте функции array_replace_recursive или array_replace
http://php.net/manual/en/function.array-replace-recursive.php
источник