k01ken’s b10g

He110 W0r1d!

PHPで複数の関数で交互に値を渡す

開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+PHP 7.1.7。

再帰関数をやっていたら、こういう形も、ありなんじゃないかと思いついたのでメモ。a関数は、b関数へ値を渡して、b関数はa関数へ値を渡すことを交互にやり、このままだと無限ループになるので、一応、上限を10に設定。ただ、今後、これを使うケースが現れるか分からないが・・・。

<?php

function a($i){
	if($i < 10){
		echo "a:".$i."<br>";
		$i++;
		b($i);
	}
}

function b($i){
	if($i < 10){
		echo "b:".$i."<br>";
		$i++;
		a($i);
	}

}

a(0);
?>

実行結果
f:id:k01ken:20180409123056p:plain

さらに、もう1つc関数を作って、a→b→c→a...という風に値を循環構造で渡すことをやってみる。

<?php

function a($i){
	if($i < 15){
		echo "a:".$i."<br>";
		$i++;
		b($i);
	}
}

function b($i){
	if($i < 15){
		echo "b:".$i."<br>";
		$i++;
		c($i);
	}

}

function c($i){
	if($i < 15){
		echo "c:".$i."<br>";
		$i++;
		a($i);
	}

}

a(0);

?>

実行結果
f:id:k01ken:20180409123556p:plain

d関数、e関数と無数に作って、つなげて、値を渡すことができる。

山の手線のような関係で駅があって、1つの駅を通過するたびに、チケットを1消費して、一定回数消費すると下車みたいなことをイメージした。

また、サンプルでは、a関数を呼び出しているが、b関数だろうが、c関数だろうが、どれでも動作には影響はないというのも面白い。