関数でのアンパサンドの意味は知っています。変数をアドレスで渡す必要があることを意味します。しかし、変数をアドレスとして渡す必要があるシナリオに遭遇したことはありません。これを明確にしてもらえますか?たとえば
function dollarx($x) {
echo $x[1];
}
function dollar(&$x) {
echo $x[1];
}
$x[0] = 1;
$x[1] = 2;
2 つの関数が同じように表示される
関数でのアンパサンドの意味は知っています。変数をアドレスで渡す必要があることを意味します。しかし、変数をアドレスとして渡す必要があるシナリオに遭遇したことはありません。これを明確にしてもらえますか?たとえば
function dollarx($x) {
echo $x[1];
}
function dollar(&$x) {
echo $x[1];
}
$x[0] = 1;
$x[1] = 2;
2 つの関数が同じように表示される
You pass "by reference" when you want the function to be able to update the value of the variable.
For example:
function dollar(&$x){
$x[1] = 12;
}
$x = array(1, 2);
dollar($x);
var_dump($x); // array(1, 12);
これを使用して、関数に変数を設定させることができます。たとえば、関数が結果を含む配列を返すようにしたり、参照によって変数を使用したりできます。
function GetUsernameAndEmailAddress(&$user, &$email) {
//get values from database or session or whatever.
$user = 'username';
$email = 'email@example.com';
}
$username = '';
$email = '';
GetUsernameAndEmailAddress($username, $email);
echo 'Hello '. $username. '. I have sent an e-mail to '.$email;