• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:foreachで一致した説明文を表示(初心)

foreachで一致した説明文を表示(初心

このQ&Aのポイント
  • ポケモン図鑑について質問させていただいた者です。
  • 手持ちのポケモンの特性の説明文と名前をループ処理で取得したいです。
  • 特性の名前と一致する説明文を取得し、一致した説明文を表示させる方法がわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ちょっと何が聞きたいのか判断できません。 #以下の例のインデントは全角空白を使ってますので #コピーする時は半角などに変換してください。 #あと、書いている処理に関してはテストしてないです(^^; 特性に対する説明文を表示したいという事なのですが foreach(@list){  ($content,$name)=split(/<>/);  if( $end_tokuse eq $name ){   print "$content\n";   last;  } } という感じで表示できますよね? 表示するデータの量がほかにもたくさんありすぎて いちいち切っていると編集が大変面倒になるので という事ですが、「表示するデータ量」というのは 何の量なのでしょうか? 特性の量?ポケモンの量?ポケモンが持っている特性の量? 「いちいち切っていると」というのは、split()の事でしょうか? 「編集が大変」というのは、書く場所が多いから?ですか? 一致した説明文をスカラー変数に代入して表示させるには どうすればいいですか。 というのは foreach(@list){  ($content,$name)=split(/<>/);  if( $end_tokuse eq $name ){   $setume = $content;   last;  } } という事では無いのですか? 出来れば最終的にどのように表示したいのかの 例をあげていただけるとありがたいです。 例) ピカチューの特性は雷です。 これを表示するのに 名前:ピカチュー 特性:雷 説明:ここに説明を書きたい 名前:思い浮かばない(複数特性がある場合) 特性:水 説明:水に対する説明 特性:火 説明:火に対する説明 特性が可変な為、それをどのように表示すればいいでしょうか? という感じだとわかりやすいかも・・・ あと、質問の意図とは違うかもしれませんが、 複数の特性を表示する為に簡単な方法として 1.特性に対する説明文を抜き出す関数を作る #表示部が簡易にできる。 sub GetComment(){  local( $char ) = @_;  foreach( @list ){   ( $comment, $name ) = split( /<>/ );   if( $char = $name ){    return $comment;   }  }  return "そのような特性はありません。"; } $setume = &GetComment( $end_tokusei ); 2.最初に連想配列に入れておく #分割処理が1度でいいので、表示数が増えても #処理時間が少なくて済む foreach( @list ){  ( $comment, $name ) = split( /<>/ );  $Com{$name} = $comment; } print $Com{$tokusei1}; print $Com{$tokusei2};

if_else
質問者

お礼

ファイルに組み込んでやってみましたが、 500エラーになってしまいました。 でも質問の内容が良くわからないようなので、 普通に print <<EOM; <table><tr><td> EOM ここに表示処理 print <<EOM; </td></tr></table> EOM を入れる方法でいきたいと思います。 ありがとうございましたm(_ _)m

すると、全ての回答が全文表示されます。

関連するQ&A