O que é melhor para usar em PHP para anexar um membro da matriz,
$array[] = $value;
ou
array_push($array, $value);
?
Embora o manual diga que é melhor evitar uma chamada de função, também li que $array[]
é muito mais lento do que array_push()
. Quais são alguns esclarecimentos ou referências?
php
arrays
performance
alex
fonte
fonte
Respostas:
Sem benchmarks, mas pessoalmente sinto que
$array[]
é mais limpo de se olhar e, honestamente, dividir fios de cabelo em milissegundos é bastante irrelevante, a menos que você planeje acrescentar centenas de milhares de strings ao seu array.Editar : executou este código:
O primeiro método usado
$array[]
é quase 50% mais rápido do que o segundo.Alguns resultados de benchmark:
Isso não deve ser surpreendente, pois o manual do PHP observa o seguinte:
Da forma como está formulado, eu não ficaria surpreso se
array_push
fosse mais eficiente ao adicionar vários valores. EDIT : Por curiosidade, fiz mais alguns testes e, mesmo para uma grande quantidade de adições, as$array[]
chamadas individuais são mais rápidas do que uma grandearray_push
. Interessante.fonte
$array[]
é realmente muito mais rápido, 300 ms vs. 2000 ms para atribuições de 1 milhão em minha máquina. No entanto, adicionar 20 itens de uma vez em array_push demorava cerca de 20$array[] =
s.O principal uso de array_push () é que você pode colocar vários valores no final do array.
Diz na documentação :
fonte
Dos documentos php para
array_push
:fonte
A palavra corrente é que [] é mais rápido porque não há sobrecarga para a chamada de função. Além disso, ninguém gosta realmente das funções de array do PHP ...
"É ... palheiro, agulha .... ou é agulha palheiro ... ah, f *** isso ... [] ="
fonte
Uma diferença é que você pode chamar array_push () com mais de dois parâmetros, ou seja, você pode enviar mais de um elemento por vez para um array.
estampas
1,2,3,4
fonte
Uma declaração $ myarray [] simples será mais rápida, pois você está apenas colocando um item na pilha de itens devido à falta de overhead que uma função traria.
fonte
Como " array_push " é uma função e é chamada várias vezes quando está dentro do loop, ela aloca uma memória na pilha. Mas quando estamos usando $ array [] = $ value, apenas atribuímos valor ao array.
fonte
O segundo é uma chamada de função, então geralmente deve ser mais lenta do que usar os recursos de acesso à matriz principal. Mas acho que até mesmo uma consulta ao banco de dados em seu script superará 1.000.000 de chamadas para
array_push()
.fonte
Embora a questão seja mais sobre desempenho, as pessoas se perguntarão se é uma boa prática usar
array_push
ou$arr[]
.A função pode significar linhas menores para vários valores:
No entanto ,
array_push
...Eu vou continuar
$arr[]
.fonte
Eu só quero adicionar:
int array_push(...)
retornar o novo número de elementos no array ( php doc ). que pode ser útil e mais compacto do que$myArray[] = ...; $total = count($myArray);
.Também
array_push(...)
é significativo quando a variável é usada como pilha.fonte