[PHP]ユーザー定義関数の出力結果を任意の変数に格納する

Pocket

通常ユーザー定義関数の出力結果は return で戻り値(返り値)として返すのが一般的ですが、
preg_match() の $match のように結果を指定された変数に保存したい場合や、 エラー発生時に任意の変数にエラーコードを格納したい場合などがあると思います。
そういった場合は引数に & を付けて参照渡しにします。(参照渡しについて

下の例では2つの数値を足した結果を任意の変数に格納しています。

<?php
sample(3, 4, $result);
echo $result;

function sample($a, $b, &$x){
	$x = $a + $b;
}

【出力結果】

7

変数 $x を参照渡しにすることで、$x に与えられた変更が $result に影響するようにしています。

次の例では関数 sample() に渡された文字列が「ok」でない場合エラーコード(例では「Error 123」)を 変数 $code に格納します。

<?php
$value = 'test';

$result = sample($value, $code);
var_dump($result);
echo $code;

function sample($value, &$error=null){
	if($value == 'ok'){
		return true;
	} else {
		$error = "Error 123";
		return false;
	}
}

【出力結果】

boolean false
Error 123

エラーコードをどの変数に格納するかは関数 sample() の第 2 引数 $error に & をつけて指定しています。
引数 $error には初期値を設定してあるのでエラーコードを受け取る必要がない場合は引数を省略できます。
例では格納先に変数 $code を指定していますが、「$err」を指定すれば「$err」に格納されます。


Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です