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); ?>
実行結果
さらに、もう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); ?>
実行結果
d関数、e関数と無数に作って、つなげて、値を渡すことができる。
山の手線のような関係で駅があって、1つの駅を通過するたびに、チケットを1消費して、一定回数消費すると下車みたいなことをイメージした。
また、サンプルでは、a関数を呼び出しているが、b関数だろうが、c関数だろうが、どれでも動作には影響はないというのも面白い。