PHPは、Web開発で広く使用されているサーバー側のスクリプト言語です。 PHPには、値と参照による値のパラメーターを渡すには2つの方法があります。この記事では、PHPの価値転送メカニズムに焦点を当て、特定のコードの例を通じて読者がこの概念を習得するのを支援します。
値の合格とは、関数の外部パラメーターのコピーを関数内の変数に渡すことを指すため、関数内のパラメーターを変更しても外部変数に影響しません。値の合格は、基本的なデータ型(整数、浮動数、文字列など)でよく使用されます。簡単な例を次に示します。
<?php
function addNumber($num) {
$num = $num + 10;
return $num;
}
$number = 5;
$newNumber = addNumber($number);
echo "元の値:" . $number . "<br>"; // 出力 5
echo "変更された値:" . $newNumber; // 出力 15
?>
上記のコードの例では、関数AddNumberはパラメーター$ numを受信し、10の追加後に値を返します。ただし、外部変数$数値の値は、関数の内部変更の影響を受けません。
通常、配列とオブジェクトはPHPの参照に渡されますが、渡されたときに値が合格するメカニズムに従います。特定の動作は、予想されるものとは異なる場合があります。これがオブジェクト値の合格の例です。
<?php
class Person {
public $name;
}
function changeName($obj) {
$obj->name = 'Lucy';
}
$person = new Person();
$person->name = 'John';
changeName($person);
echo "原名:" . $person->name . "<br>"; // 出力 John
echo "変更された名前:" . $person->name; // 出力 Lucy
?>
この例では、オブジェクト$の人が関数changenameに渡されると、関数はそのプロパティ値を内部的に変化させるが、値の合格の性質により、変更は内部的に関数に制限されていることがわかります。
配列の場合、同様の状況が適用されます。これが配列値を渡す例です。
<?php
function changeElement($arr) {
$arr[0] = 100;
}
$array = [1, 2, 3];
changeElement($array);
echo "オリジナル配列:";
print_r($array); // 出力 [1, 2, 3]
?>
上記のように、配列要素は変更されていますが、外側の配列の値は影響を受けません。
この記事を通して、PHPの値転送メカニズムをより深く理解しています。基本的なデータ型の場合、PHPは値のコピーを渡しますが、複合データ型(配列やオブジェクトなど)の場合、渡されたときに参照パスのように動作する場合でも、値の合格は実際の操作に残ります。したがって、開発者は、プログラムの正確性を確保するために、コードを作成する際に、さまざまなニーズに応じて適切なパラメーター配信方法を選択する必要があります。