PHPを勉強中の者です。

ユーザ関数を定義して色々処理しているのですが、

$count = 1;
while ($count < 4) {

$list = orekansuu1($list);

$count++;
}

orekansuu1を$countのカウントと連動させて
orekansuu2
orekansuu3
とあげて処理をしたいのですが、いかがしたら良いでしょう?
先輩方のご意見お伺いしたいです。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/04/07 11:58:36
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント80pt

PHP には、可変関数という機能があります。
PHP: 可変関数 - Manual

それを使うと、こんな感じに書けます。

<?php

$count = 1;
while ($count < 4) {

    // 関数名を、文字列として変数に代入
    $func_name = "orekansuu" . $count;

    // 関数名を持った変数に、括弧と引数をつけると呼び出すことができる
    $list = $func_name($list);

    $count++;
}

?>

http://ideone.com/whvPsU

id:admn

回答ありがとうございます。

$list = "orekansuu".$count($list);

で作った当初やってエラーだった無理なのかとおもったら、

$func_name = "orekansuu" . $count;
$list = $func_name($list);

と先に代入するのですか!
勉強になりました。

2015/04/07 11:58:02

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント20pt
switch (($count) {
    case 1:
        $list = orekansuu1($list);
        break;
    case 2:
        $list = orekansuu2($list);
        break;
    case 3:
        $list = orekansuu3($list);
        break;
}

上記みたいに 値によって実行するものを変えたらいいですね。

他2件のコメントを見る
id:taknt

orekansuu中で 処理を工夫したほうがいいと思います。

2015/04/07 07:42:40
id:admn

orekansuuはXMLやHTMLをリライトするものなのです。リライト後は統一されたデータを生成してDBにぶち込みます、DBにぶち込む部分や評価の数式は統一なので親のPHPに書けばいいかなぁと、、、

ですので、処理するXMLやHTMLによってorekansuuの内容は違い、バラバラに外部ファイルにして、順番に外部ファイルを読み込み、処理出来たらキレイだな~と思って一つのPHPにまとめて一撃で処理させよう!と思ったのがの事の発端なんです。

連続させて処理するとorekansuuがかぶり、『Fatal error: Cannot redeclare』エラーが出てしまいます。それでorekansuuに番号を振って回避させたのですが解決策があればいいかなとネットサーフィン。

分からず、、、って感じです

2015/04/07 07:56:14
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント80pt

PHP には、可変関数という機能があります。
PHP: 可変関数 - Manual

それを使うと、こんな感じに書けます。

<?php

$count = 1;
while ($count < 4) {

    // 関数名を、文字列として変数に代入
    $func_name = "orekansuu" . $count;

    // 関数名を持った変数に、括弧と引数をつけると呼び出すことができる
    $list = $func_name($list);

    $count++;
}

?>

http://ideone.com/whvPsU

id:admn

回答ありがとうございます。

$list = "orekansuu".$count($list);

で作った当初やってエラーだった無理なのかとおもったら、

$func_name = "orekansuu" . $count;
$list = $func_name($list);

と先に代入するのですか!
勉強になりました。

2015/04/07 11:58:02
  • id:psne
    もう少しどうにかした方が良いかもしれないと思うのですが、ちょっと思考を変えて、
    http://php.net/manual/ja/function.include.php
    外部に対応するファイル(orekansuu1.php orekansuu2.phpなど)として書き出して呼び出してしまうというのは、どうでしょう。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません