いつもお世話になっております。
以下のようなソースを記述しました。
php
1a<br> 2<?php 3function a($moji){ 4print $moji; 5} 6?> 7<br> 8c<br> 9<?php 10$moji = "b"; 11a($moji); 12?>
「a<br>」と「<br> c<br>」の間に
phpのprint $moji が挟まっていて、
$moji == "b"が成り立つので、結果が
a
b
c
となることを期待したのですが、実際には
a
c
b
となってしまいました。htmlソースを確認したところ
html
1a<br> 2<br> 3c<br> 4b
となってしまっていました。
webも調べましたが、この問題を扱う記事がうまく見つかりませんでした。
原因と、できれば代替案や解決策をご教授願います。
よろしくお願いします。
追記
例えば以下のプログラムを用意します。
php
1<div id="aaa"> 2数字を並べてみた<br> 3<?php 4function a($m){ 5print $m; 6} 7?><br> 8ここまで 9</div> 10<div id="bbb"> 11<?php 12/* 13併設区域 14*/ 15for ($m=0;$m<=$_GET['n'];$m++){ 16a($m); 17flush(); 18} 19?> 20</div>
出力されるhtmlソースが以下のようになってしまいます。(urlパラメータn=7のとき)
html
1<div id="aaa"> 2数字を並べてみた<br> 3<br> 4ここまで 5</div> 6<div id="bbb"> 701234567</div>
出力させたいhtmlソースは以下の通り
html
1<div id="aaa"> 2数字を並べてみた<br> 301234567 4<br> 5ここまで 6</div> 7<div id="bbb"> 8</div>
確かに、関数を使わずに、aaaのdiv内でphpのプログラムを完結させてしまうことも可能ですが、
for文第二引数の条件式右辺である$_GET['n']を、
bbbのdiv内の「併設区域」内で極めて複雑に定義された$nという変数に置き換える必要があるとき、関数に頼らざるを得ず、困っております。