No manual do PHP, ( array_push ) diz ..
Se você usar array_push () para adicionar um elemento ao array, é melhor usar $ array [] = porque dessa forma não há sobrecarga de chamar uma função.
Por exemplo :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
vs
$arr[] = "stackoverflow";
print_r($arr);
Não entendo porque é que existe uma grande diferença.
Respostas:
Quando você chama uma função em PHP (como
array_push()
), há sobrecargas para a chamada, pois o PHP precisa pesquisar a referência da função, encontrar sua posição na memória e executar qualquer código que definir.Usar
$arr[] = 'some value';
não requer uma chamada de função e implementa a adição diretamente na estrutura de dados. Assim, ao adicionar muitos dados, o uso é muito mais rápido e eficiente em termos de recursos$arr[]
.fonte
$arr[] = value
seja mais rápida? Tentando imaginar por que o compilador trataria o código de maneira diferente.Você pode adicionar mais de 1 elemento de uma vez à matriz usando array_push,
por exemplo
array_push($array_name, $element1, $element2,...)
Onde $ element1, $ element2, ... são elementos a serem adicionados ao array.
Mas se você quiser adicionar apenas um elemento de cada vez, outro método (ou seja, usando $ array_name []) deve ser preferido.
fonte
A diferença está na linha abaixo para "porque dessa forma não há sobrecarga na chamada de uma função."
fonte
Você deve sempre usar,
$array[]
se possível, porque como a caixa indica, não há sobrecarga para a chamada de função. Portanto, é um pouco mais rápido do que a chamada de função.fonte
array_push - coloca um ou mais elementos no final da matriz
Anote as palavras " um ou mais elementos no final " para fazer isso usando
$arr[]
você teria que obter o tamanho máximo do arrayfonte
$arr[...index...] = $value;
com o que está sendo discutido aqui, que é$arr[] = $value;
. Não é necessário saber o tamanho ou a matriz para empurrar no final. Vários elementos seriam simplesmente várias chamadas:$arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
explicar: 1. o primeiro declara a variável no array.
2. o segundo método array_push é usado para empurrar a string na variável de array.
3.finalmente, ele imprimirá o resultado.
4. o segundo método é armazenar diretamente a string no array.
5. os dados são impressos nos valores da matriz usando o método print_r.
esses dois são iguais
fonte
ambos são iguais, mas array_push faz um loop em seu parâmetro que é um array e executa $ array [] = $ element
fonte
Eu sei que esta é uma resposta antiga, mas pode ser útil para os outros saberem que outra diferença entre as duas é que se você tiver que adicionar mais de 2/3 valores por loop a uma matriz, é mais rápido usar:
ao invés de:
editar- Esqueci de fechar o colchete para o
for
condicionalfonte
for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }
. Eu especulo que array_push ainda é um pouco mais rápido do que isso.Ninguém disse, mas array_push apenas empurra um elemento para o END OF THE ARRAY, onde $ array [index] pode inserir um valor em qualquer índice fornecido. Grande diferença.
fonte
$array[index] =
, o que é uma operação diferente de$array[] = ...
. A questão fornece duas partes do código e pergunta por que haveria uma diferença significativa [de desempenho] entre elas. A questão significa literalmente$array[] = ...
, que é um idioma específico do php, que não envolve um índice. array + index resolve um problema diferente, produz um código diferente e tem uma compensação diferente.