phpについて


$hoge[1]、$hoge[2]、$hoge[3].....
となっているときはforループで簡単に同じ処理を行えますが

$hoge1、$hoge2、$hoge3.....
となっている場合に同じようにする方法はあるのでしょうか?

それとも$hoge50 まであったら50行同じ事を書く必要があるのでしょうか。
できれば配列にしたくなく、この変数のまま処理できればと考えています。

よろしくお願いします。

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

ベストアンサー

id:standard_one No.1

回答回数252ベストアンサー獲得回数23

ポイント23pt

日本語で説明してもわかりにくいと思うのでサンプルを

$hoge0 = 0;

$hoge1 = 0;

$hoge2 = 0;

for($i=1;$i<3;$i++)

{

$dst="hoge" . $i;

${$dst} = $i; // こんな感じで目的が達成できます

}

echo $hoge0 . "\n";

echo $hoge1 . "\n";

echo $hoge2 . "\n";

id:worldtravel

なるほどっ

こんな事ができたんですね。

ありがとうございました。

2009/07/22 18:59:22

その他の回答3件)

id:standard_one No.1

回答回数252ベストアンサー獲得回数23ここでベストアンサー

ポイント23pt

日本語で説明してもわかりにくいと思うのでサンプルを

$hoge0 = 0;

$hoge1 = 0;

$hoge2 = 0;

for($i=1;$i<3;$i++)

{

$dst="hoge" . $i;

${$dst} = $i; // こんな感じで目的が達成できます

}

echo $hoge0 . "\n";

echo $hoge1 . "\n";

echo $hoge2 . "\n";

id:worldtravel

なるほどっ

こんな事ができたんですね。

ありがとうございました。

2009/07/22 18:59:22
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント23pt

可変変数を使えばできます。

下記スクリプトを参考にしてください。

<?php
//代入
for ($i = 1; $i < 20; $i++) {
    $a = 'hoge' . $i;           //変数名
    $$a = 100 + $i;
}

//表示
for ($i = 1; $i < 20; $i++) {
    $a = 'hoge' . $i;           //変数名
    echo "$a = ${$a}\n";
}
?>
id:worldtravel

ありがとうございます。

可変変数と言う言葉を知りませんでした。

2009/07/22 19:01:40
id:nakamuraaaaa No.3

回答回数7ベストアンサー獲得回数2

ポイント22pt

このような動作で要件を満たしているでしょうか?

要件を満たしていなかったらポイントは0で構いません。


$hoge1 = 111;

$hoge2 = 222;

$hoge3 = 333;

$hoge4 = 444;

$hoge5 = 555;

for ($i = 1; $i <= 5; $i++) {

print $i . '->' . ${"hoge" . $i} . "\n";

}

id:worldtravel

ありがとうございます。

2009/07/22 19:00:00
id:y-kawaz No.4

回答回数1422ベストアンサー獲得回数226

ポイント22pt

こんな感じでしょうか?

<?php
$hoge1 = 'fuga1';
$hoge2 = 'fuga2';
$hoge3 = 'fuga3';
for($i = 1; $i <= 3; $i++) {
        //定義済み変数は get_defined_vars() で取得できる
        $arr = get_defined_vars();
        echo $arr["hoge$i"];
        //グローバル変数なら $GLOBALS も使える
        echo $GLOBALS["hoge$i"];
        //こんな書式でもいけます
        $name = "hoge$i";
        echo $$name;
}
?>
|php|<
id:worldtravel

ありがとうございます。

2009/07/22 19:00:35
  • id:worldtravel
    $sps = array($sp1a,$sp1b,$sp2a,$sp2b,$sp3a,$sp3b,$sp4a,$sp4b,$sp5a,$sp5b);
    foreach($sps as $no => $value){
    $value = preg_replace("/[^\d\.]/","",$value);
    $value = number_format($value, 2);
    $value = preg_replace("/[0\.]+$/","",$value);
    $sps[$no] = $value;
    }
    list($sp1a,$sp1b,$sp2a,$sp2b,$sp3a,$sp3b,$sp4a,$sp4b,$sp5a,$sp5b) = $sps;

    これでは汚いですか!?

    といっても変数が100とかあったら醜いですね。

    ついでなのですが、number_format($value, 2); こうしたときに、
    もし「xx.00」の場合は「xx」に
    もし「xx.10」の場合は「xx.1」にしたいのですが
    オプションなどは無いのでしょうか?

    よろしくお願いします。

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

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

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

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