笑、使い方はまだ初期段階にすぎません。それをより良く使用するには、原理を理解する必要があります。
値の受け渡し: 実際のパラメーターの値を行パラメーターに代入します。の場合、行パラメータの変更は実際のパラメータの値には影響しません
参照による受け渡し: パラメータが実際にアドレスによって渡された後、行パラメータと実際のパラメータは同じオブジェクトですが、それらの名前は異なります行パラメータの変更は実際のパラメータの値に影響します。
説明:
渡された値: ルート コピーは同じです。たとえば、私は家を持っています。あなたが私と同じ家を建てても、私が家で何をしても私には影響しません。あなたに影響を与えますが、それらは互いに独立しています。
参考までに: 大学の時にC言語で習ったポインタを思い出しました。 ほぼ同じ感じです。たとえば、私は家を持っています。私があなたに鍵を渡すと、あなたが家の中で何をしても私に影響を与えます。
1、php インスタンス
1、値を渡す
コードをコピー コードは次のとおりです:
$param1=1; //変数 1 を定義
$param2=2; //変数 2 を定義
$param2 = $param1;変数 2
echo $param2; // 1
?>
2、参照を渡します
コードをコピーします コードは次のとおりです:
$param2=1; //変数 2 を定義します
$param1 = &$param2;変数 2 を変数 1 に代入
echo $param2; //1 として表示
$param1 = 2; //変数 1 に 2 を代入
echo $param2 //2 として表示
?> ;
3、関数転送値
コードをコピー コードは次のとおりです:
/ /値を渡す
$param1 = 1; //変数 1 を定義します
関数 add($param2) //パラメータを渡します
{
$param2=3; / /変数 2 に 3 を割り当てます
}
$param3=add($param1); //メソッド add を呼び出し、変数 1 を変数 2 に渡します
echo '
$param1=='。 $param1.'
'; //$param1==1 として表示されます
echo '
$param2=='.$param2.'
' //$param2 として表示されます== $param2 はローカル変数なので、グローバル
echo '
$param3=='.$param3.'
'; //$param3== として表示されます。 add メソッドには戻り値がありません。$param3 は空です
?>
4、関数は参照
コードをコピーします コードは次のとおりです:
//値を渡す
$param1 = 1; //変数 1 を定義
function add(&$param2) // パラメータを渡します
{
$ param2=3; // 変数 2 に 3 を代入します
// return $param2; // 変数 2 を返します
}
echo '
$param1=='.$param1.'< ;br>' //$param1==1 として表示され、変数 1 は操作されません
$param3=add($param1); //メソッド add を呼び出します変数 1 の参照を変数 2 に渡します
echo '
$param1=='.$param1.'
'; //変数呼び出しの処理中は $param1==3 と表示されます。 $param2 の変更は変数 1 に影響しますが、リターンはありません。
echo '
$param2=='.$param2.'
' // $param2== と表示されます。はローカル変数なので、グローバル世界には影響しません
echo '
$param3=='.$param3.'
' //リターンコメントを削除すると $param3== として表示されますメソッドでは $param3==3
?>
5、関数参照 2
コードをコピー コードは次のとおりです:
//参照を渡します
$param1 = 1;
function &add(&$param2)
{
$param2 = 2;
return $param2;
$param3 =&add($param1);
$param4=add($param1); br>$param3=='.$param3.'
'; // $param3 ==2
echo '
$param4=='.$param4.'
'; // $param4==2 として表示
echo '
$param1== '.$param1.'
' // 呼び出し処理中は $param1==2 として表示変数、$param2 の変更は変数 1 に影響します
$param3;
/*以下は $param1= =3 と表示されます。これは、$param2 と $param1 が同じ場所を参照しているためです、
*戻り値の前にはアドレス記号または参照が付きます $param3=&add($param1);
* このように $param3,$param2 $param3 の場合は $param1 と同じ場所を参照します ;,
* $param1 が変更されます*/
echo '
$param1=='.$param1.'
' ;
$param4 ; 以下は $param1 として表示されます==3. なぜ 4 ではなく 3 なのでしょうか? これは、戻り値の前に
* アドレス記号がないため、$param4 の変更は $param1*/ に影響しません。
エコー '
$param1=='.$param1.'
'
?>
ははは、でも、消費するリソースが少ないので、参照を渡す方が良いと思います。上記のテストでは明らかな差はありませんが、これはテスト データが十分に大きくないためと考えられます。テストするデータがさらに多い場合は、大きな差が生じると思います。