В чем основное отличие между следующими утверждениями?

Недавно я изучал «Passing by Reference», я узнал следующие способы

В чем основное отличие между следующими способами.

1.

function foo(&$var) { $var++; } $a=5; foo($a); 

2.

 function foo($var) { $var++; } $a=5; foo(&$a); 

3.

 function foo(&$var) { $var++; } function &bar() { $a = 5; return $a; } foo(bar()); 

даже несмотря на то, что все они дают одинаковые результаты, и с ними лучше всего работать.

Благодарю.