PHPを勉強中の者です。

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

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

$list = orekansuu1($list);

$count++;
}

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

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2015/04/07 05:53:15
  • 終了:2015/04/07 11:58:36

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4584ベストアンサー獲得回数19242015/04/07 10:10:36

ポイント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ベストアンサー獲得回数11982015/04/07 07:14:17

ポイント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

a-kuma3回答回数4584ベストアンサー獲得回数19242015/04/07 10:10:36ここでベストアンサー

ポイント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など)として書き出して呼び出してしまうというのは、どうでしょう。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません