(PHP)DBのaaaというカラムに moge,hatena,web,google といった感じに単語を,で区切った値が入っています。


行いたいことは,を取り除き各単語を各変数に格納することです。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:zifree No.1

回答回数175ベストアンサー獲得回数6

ポイント25pt

explode()で可能です。

各変数に格納するのであれば


$data = ”moge,hatena,web,google”;

list($foo,$bar,$baz,$qux) = explode(”,”,$data);


といった感じでどうでしょうか。

正規表現を使いたい場合はsplit()やpreg_split()で同様のことが可能です。

id:esecua

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

再度質問なのですが、DBに入っている単語の数が把握できない場合はどうすればいいのでしょうか?

例えば

list()に入る変数の数はDB入っている単語と同じ数、つまりmoge,hoge,hh の場合$1,$2,$3のように1からの数字を変数に割り当てるようにするにはどうしたらいいのでしょうか?

よろしくお願いいたします。

2006/01/15 13:34:16
id:zifree No.2

回答回数175ベストアンサー獲得回数6

ポイント25pt

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/php_k08.htm

PHP 基礎編8 - 配列操作、sort、asort、ksort、array_push、array_shift - SAK Streets

explode()の戻り値は配列に入るので、単語の数がわからなければ配列を使うべきです。


$data = ”moge,hatena,web,google”;

$foo = explode(”,”,$data);


この場合、$foo[0]にmoge、$foo[1]にhatenaが入ります。

print ”<p>$foo[2]</p>¥n”

web

が出力されることになります。

配列に入っている要素の数(今回の例では単語の数)はcount()で判断できます。

$ct = count($foo);

print ”<p>$ct</p>¥n”

とすると4が出力されます。

配列の添字([]内の数字のこと)は0から始まるので、

count($foo)の結果が4であれば$fooの要素は$foo[0]から$foo[3]まで存在することがわかります。

($foo[4]は存在しないことに注意して下さい)

配列の中身を参照する方法はいろいろありますが、全てを1つずつ参照する場合foreachが便利です。

foreach ($foo as $hoge) {

print ”$hoge¥n”;

}


とすると

moge

hatena

web

google

と、$hogeに配列$fooの要素が最初から順番に入って出力されます。

id:esecua

丁寧な回答ありがとうございました。

2006/01/15 14:26:42

コメントはまだありません

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

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

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

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