The above function is assigning an array to a new variable. Variables in PHP are loosely typed meaning a variable can be of any type (array, integer, string, float, etc). In PHP (5+) the data in $list is transferred (cloned) into $newlist. The reason you use return statements in functions is because the scope of variables. Once arrFunc() completes the scope of $list ends and the garbage collector will terminate $list (this means you can't reference $list outside of arrFunc()).
Your above code is equal to:
$list = array("one", "two", "three");
$newlist=$list;
print_r ($newlist);
You could also remove the return and pass by reference:
<?PHP
function arrFunc(&$list)
{
$list = array("one", "two", "three");
}
$newlist=array();
arrFunc($newlist);
print_r ($newlist);
// prints: Array ( [0] => one [1] => two [2] => three )
?>
The & symbol in the function declaration parameter values (&$list) tells the function to pass by reference. This means that you are passing the address of the variable in memory to the function. $list and $newlist essentially point to the same block in memory.