PHP Array Merge форматирует ключ

187
24 января 2018, 16:36

Есть массивы:

$a = array('one' => '');
$b = array('404' => 'true');

Я делаю:

print_r(array_merge($a, $b));

Вопрос, почему получается следующе, и как сделать чтобы вместо 0, было 404?

(
    [one] => 
    [0] => true
)
Answer 1

Используйте оператор +, сохраняйте результат в переменную, и передавайте эту переменную дальше:

$a = array('one' => '');
$b = array('404' => 'true');
$c = $a + $b;
print_r($c);

UPD: Если вариант со сложением массивов не безопасен, можно построить промежуточный массив, и обработать его вложенными циклами:

$a = ['one' => ''];
$b = ['404' => 'true'];
$tmp = [$a, $b];
foreach ($tmp as $arr)  {
    foreach ($arr as $k => $v) {
        $c[$k] = $v;
    }
}
var_dump($c);

Результат:

array (size=2)
  'one' => string '' (length=0)
  404 => string 'true' (length=4)
Answer 2

потому что это документированное поведение функции array_merge

Если входные массивы имеют одинаковые строковые ключи, тогда каждое последующее значение будет заменять предыдущее. Однако, если массивы имеют одинаковые числовые ключи, значение, упомянутое последним, не заменит исходное значение, а будет добавлено в конец массива.

В результирующем массиве значения исходного массива с числовыми ключами будут перенумерованы в возрастающем порядке, начиная с нуля.

сложение же массивов даст несколько иной результат.

Оператор + возвращает левый массив, к которому был присоединен правый массив. Для ключей, которые существуют в обоих массивах, будут использованы значения из левого массива, а соответствующие им элементы из правого массива будут проигнорированы.

READ ALSO
Зачем нужны интерфейсы в PHP? [дубликат]

Зачем нужны интерфейсы в PHP? [дубликат]

На данный вопрос уже ответили:

182
Как получить текст и картинку, из файла .docx с помощью PHPWord?

Как получить текст и картинку, из файла .docx с помощью PHPWord?

Как я могу получить картинку и текст из файлаdocx с помощью библиотеки PHPWord? Так и не смог найти ничего вразумительного

187
Подстановка в шаблон Word проблема с ZipArchive

Подстановка в шаблон Word проблема с ZipArchive

Делаю подстановку данных клиента в шаблон документа используябиблиотеку phpwordВсе делаю по примеру

166
Пользовательское Telegram API, с чего начать?

Пользовательское Telegram API, с чего начать?

Очень много информации по Telegram API для бота, а как использовать обычное Telegram API на PHP?

226