<?php ################################################# ## TESTANDO PASSAGEM DE PARAMETRO POR ARRAY ################################################# function muda_array($k) { $k[] = 1; } $arr = array(); muda_array($arr); //print Variavel em array: print("Variavel em array: $arr[0]\n"); ################################################# ## TESTANDO PASSAGEM DE PARAMETRO POR OBJETO ################################################# class Abc { public $abc = 0; public function setaVariavel($a) { $this->abc = $a; } } function muda_classe($k) { $k->setaVariavel(1); } $k = new Abc(); muda_classe($k); //print Variavel em classe: 1 print("Variavel em classe: $k->abc \n"); exit; ?>
Para no primeiro exemplo o array ser alterado após executar o método muda_array, precisamos configurar o parâmetro k como sendo de referência e não por valor, sendo assim mudamos o método para
function muda_array($k) { $k[] = 1; }
Se você rodar a aplicação novamente depois dessa alteração perceberá que o array é alterado apoós a execução do método muda_array.
Um link que explica isso perfeitamente AQUI!