「PHPの基礎 - 関数」の版間の差分

ナビゲーションに移動 検索に移動
 
230行目: 230行目:
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
* $GLOBALS`配列を使用する方法
* $GLOBALS配列を使用する方法
  <syntaxhighlight lang="php">
  <syntaxhighlight lang="php">
  $hoge = 1;
  $hoge = 1;
244行目: 244行目:
<u>これにより、関数の依存関係が明確になり、テストや保守が容易になる。</u><br>
<u>これにより、関数の依存関係が明確になり、テストや保守が容易になる。</u><br>
<u>ソースコードの予測可能性と再利用性も向上する。</u><br>
<u>ソースコードの予測可能性と再利用性も向上する。</u><br>
<br><br>
== 参照渡し ==
参照渡しとは、変数のメモリアドレスを直接渡すことにより、関数内で値を変更すると呼び出し元の変数の値も変更される仕組みである。<br>
<br>
関数の引数の前に&を付加することにより参照渡しになる。<br>
<br>
* 特に大きな配列やオブジェクトを扱う場合、メモリ使用量を節約できる場合がある。
* 複数の値を同時に変更する場合に便利である。
<br>
<syntaxhighlight lang="php">
// 参照渡し
function addFiveByRef(&$num)
{
    $num += 5;
}
$value = 10;
addFiveByRef($value);
echo $value;  // 15 (元の値が変更される)
</syntaxhighlight>
<br>
<syntaxhighlight lang="php">
// 配列の要素を全て2倍にする関数
function doubleArrayValues(&$arr)
{
    foreach ($arr as &$value) {
        $value *= 2;
    }
}
$numbers = [1, 2, 3, 4, 5];
doubleArrayValues($numbers);
print_r($numbers);  // [2, 4, 6, 8, 10]
</syntaxhighlight>
<br>
参照渡しは、以下に示すような場合に使用することを推奨する。<br>
* 大きなデータ構造を扱う時のパフォーマンス最適化
* 複数の値を同時に変更する必要がある時
* オブジェクトのメソッドチェーンを実装する時
<br><br>
<br><br>


案内メニュー