За последние 24 часа нас посетили 20498 программистов и 1007 роботов. Сейчас ищут 410 программистов ...

array_merge vs array_replace

Тема в разделе "PHP для новичков", создана пользователем Awilum, 6 мар 2020.

  1. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    Доброго времени суток!

    Вопрос этот наверное нубский, но я хз почему то я не могу увидеть реально разницы между этими двумя функциями. либо я туплю и что-то делаю не так, или реально нет разницы между ними в реальности.

    мануал еще раз прочитал
    https://www.php.net/manual/ru/function.array-replace.php
    https://www.php.net/manual/ru/function.array-merge.php

    проверяю вот например:

    PHP:
    1. $array1 = array("title" => "111", "title3" => "333");
    2. $array2 = array("title" => "222", "title2" => "222");
    3.  
    4. $result = array_merge($array1, $array2);
    5. $result2 = array_replace($array1, $array2);
    6.  
    7. echo '<pre>';
    8. print_r($result);
    9. echo '</pre>';
    10.  
    11. echo '<pre>';
    12. print_r($result2);
    13. echo '</pre>';

    http://www.writephponline.com

    результат одинаковый

    Код (Text):
    1. Array
    2. (
    3.     [title] => 222
    4.     [title3] => 333
    5.     [title2] => 222
    6. )
    7. Array
    8. (
    9.     [title] => 222
    10.     [title3] => 333
    11.     [title2] => 222
    12. )
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.748
    Симпатии:
    1.321
    Адрес:
    Лень
    а теперь в этих массивах ключи убираем и становится совсем другой результат. ;)
    --- Добавлено ---
    по натив функционалу: в массиве невозможно держать два одинаковых ключа, поэтому array_merge при сливании/добавление в одно целое, автоматически перезаписывает по последующему, идентичному ключу - значение. Просто потому что невозможно
    --- Добавлено ---
    -------
    Ты не указал ключ ? почему не заменяется как по вышесказанному ? да потому что ты их не указал и их в природе (ОЗУ имена ключей) не регистрируется. В print_r и т.д. нам подставляют ключи по дефолту
     
  3. Awilum

    Awilum Активный пользователь

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    спасибо, да как раз вот нагуглил этот вопрос, да там дело в числовых ключах

    https://overcoder.net/q/485941/различия-между-arrayreplace-и-arraymerge-в-php

    только вот хз, важно ли это например для конфигов типа ключ -> значение
    всегда же в конфигах ключ - это строка и array_merge для конфигов будет достаточно, разве может быть иначе ?
     
  4. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Но если тебе нужно заменить, то replace выглядит как минимум понятнее для того кто читает код )