人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpについて

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

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

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

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge PHP ループ 変数 配列
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● standard_one
●23ポイント ベストアンサー

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

$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";

◎質問者からの返答

なるほどっ

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

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


2 ● pahoo
●23ポイント

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

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

<?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";
}
?>
◎質問者からの返答

ありがとうございます。

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


3 ● nakamura
●22ポイント

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

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


$hoge1 = 111;

$hoge2 = 222;

$hoge3 = 333;

$hoge4 = 444;

$hoge5 = 555;

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

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

}

◎質問者からの返答

ありがとうございます。


4 ● y-kawaz
●22ポイント

こんな感じでしょうか?

<?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|<
◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ