array_merge по сравнению с array_value для сброса индекса массива

У меня есть 1 массив, который я хочу повторно индексировать. Я нашел это обоими array_values и array_merge функции могут сделать задание (и мне не нужны 2 массива для array_merge функционируйте для работы).

Который быстрее для очень большого массива? Я сравнил бы этого, но я не знаю, как и еще не имеют большого массива.

Перед переиндексом:

Array
(
    [0] => AB
    [4] => EA
    [6] => FA
    [9] => DA
    [10] => AF
)

После переиндекса:

Array
(
    [0] => AB
    [1] => EA
    [2] => FA
    [3] => DA
    [4] => AF
)

7
задан Michael Mrozek 30 May 2010 в 23:40
поделиться

4 ответа

Я тоже не делал бенчмарки - и если вам нужно быть уверенным, вам стоит их сделать.

Тем не менее, я подозреваю, что если одно предпочтительнее другого, то array_values() будет лучшим вариантом.

В конце концов, то, что вы хотите сделать, - это именно то, для чего был разработан array_values().

2
ответ дан 7 December 2019 в 05:18
поделиться

Я получил бенчмарк, array_value в 3 раза быстрее (извините, что отвечаю на свой вопрос, раздел комментариев не сохраняет формат)

для массива с 8043 элементами

array values занял 0.003291130065918 секунд.

объединение массивов заняло 0.0096800327301025 секунд.

$shuf - это неиндексированный массив

Ниже приведен код для выполнения бенчмарка (скопировал его из Интернета)

    $sha1_start = microtime(true); 
    $arraymerge = array_merge ($shuf); 
    $shal_elapsed = microtime(true) - $sha1_start;


    $start = microtime(true); 
    $arrayvalue = array_values ($shuf); 
    $elapsed = microtime(true) - $start;

echo "<br>array values took $elapsed seconds."; 
echo "<br>array merge took $shal_elapsed seconds.";
3
ответ дан 7 December 2019 в 05:18
поделиться

array_values предназначен для того, чтобы делать именно то, что вы хотите. array_merge предназначен для чего-то другого, и вы получили обходной путь, чтобы заставить его работать в вашем случае. (хотя у вас могут возникнуть проблемы, если в индексах будет забыто нечисловое значение).

Я не знаю, есть ли существенные различия в производительности, но код, написанный с использованием array_values, легче читать. И я не думаю, что функция, предназначенная для выполнения чего-то одного, работает медленнее, чем функция, предназначенная для выполнения чего-то другого.

Надеюсь, это поможет.

2
ответ дан 7 December 2019 в 05:18
поделиться

Важно отметить, что array_merge () сбрасывает ключи массива только в том случае, если в массиве нет строковых ключей.

1
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: