値渡しと参照渡し

値渡しだとコピーされるので値は変更されない。
参照渡しだと中身を変更できる。
ただし、参照型のオブジェクトだと常に参照渡しの模様。
あえて参照渡しをする意味も無い気がします。

<?php
$str = "hoge";

// 値渡し
function mod($str){
    $str .= "fuga";
}

// 参照渡し
function modref(&$str){
    $str .= "hoge";
}

mod($str);

echo $str . "\n"; // => hoge

modref($str);

echo $str . "\n"; // => hogehoge

// ただし、参照型だと常に参照渡し
$obj = new stdClass();
$obj->x = "10\n";

echo $obj->x; // => 10

function mod2($obj){
    $obj->x = "20\n";
}
mod2($obj);
echo $obj->x; // => 20

参照渡しについては下記によくまとまってる。
qiita.com