• ベストアンサー

連想配列で

繰り返し処理で連想配列の数字を変更しようとしたらうまくいきません 他にやり方ありますか? <?php $data['fre1']="りんご"; $data['fre2']="バナナ"; while ($k<3) { $k++; print(htmlspecialchars($data['fre{$k}'], ENT_QUOTES)); }

  • flash0
  • お礼率97% (297/306)
  • PHP
  • 回答数1
  • ありがとう数1

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

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

正規表現で数字だけ抜き出せばOK? いまいちどういう処理をしたいのか分かりにくいけど。 http://ideone.com/FQlkaW

flash0
質問者

お礼

ありがとうございました

flash0
質問者

補足

申し訳ありません、わかりやすくするために短いコードで書いたつもりが余計わかりづらくなってしまいました 表示できました! 後で自分で考えてたら$data['fre'.$k]でも処理できることがわかりました。ありがとうございます!

関連するQ&A

  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • javascript php フォームについて

    javascriptで作ったフォームをphpに送信したいのですが、上手く送信できません。 どのようにすれば上手く送信することができるでしょうか? 回答お願いします。 javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body>

    • 締切済み
    • PHP
  • stdClass Objectを連想配列のように個別に取り出したい。

    $aに連想配列が入っているとして、 print "<pre>";print_r($a);print "</pre>";   ↓ array (  [Return] => array   (    [data] => あいうえお   ) ) このように連想配列の入った変数から データを個別に取るとき このように、配列名を並べると print $a['Return']['data']; ↓ あいうえお と、個別に取り出せますが、 あるデータをprint_rすると、 stdClass Object (  [Return] => stdClass Object   (    [data] => あいうえお   ) ) というふうに"stdClass Object"として出力されてしまいました。 stdClass Objectのデータを個別に取り出したいのですが 連想配列のような記述だとうまく取り出せません。 stdClass Objectのデータはどのようにして個別に取り出すのでしょうか?

    • ベストアンサー
    • PHP
  • 他スクリプトの連想配列を扱いたい

    a.phpにある特定の連想配列を、b.phpで扱いたいのですが どのようにすれば良いのでしょうか?? 簡略化して書きますが、a.phpに $a[japan][kantou][] = "東京"; $a[japan][kantou][] = "神奈川"; $a[japan][kantou][] = "千葉"; $a[japan][kansai][] = "大阪"; $a[japan][kansai][] = "兵庫"; $a[japan][kansai][] = "京都";    ・    ・    ・ (簡略化していますが実際はもっと複雑な連想配列です。) 上記のような連想配列があり、 b.phpで、$a[japan][kansai]の配列を扱いたいのです。 b.phpで、requireを使ってa.phpを読み込んでも a.php内の他の実行処理までされてしまうのでNG。 扱いたい連想配列をtxtなどに出力し、 b.phpでそのtxtを読み込んで扱う事も考えたのですが、わざわざ出力するのも・・・ なのでNG。 globalで、他スクリプトの特定の連想配列を読み込む事はできないですよね・・・? 何かいい方法があればご教授頂けたらと思います。

    • ベストアンサー
    • PHP
  • 連想配列を処理するにあたって

    お世話になっております。 連想配列について質問させて頂きます。 以下のような、キーに文字列、インデックスに数字を指定している連想配列があるとします。 Array([あいうえお] => 0 [かきくけこ] => 0 [さしすせそ] => 0 [たちつてと] => 0) この連想配列のキーを指定し、そのキーに対するインデックスの数字を別の数字に置換したく思っています。 仮に、「あいうえお」のキーを指定して、そのキーに対するインデックス「0」を「1」に変更したいのです。 array_fill()やarray_fill_keys()などの関数を調べて試してみましたができませんでした。確実にプログラムが間違っているとしか言いようがないのですが、どなたかアドバイスをお願い致します。 以下のコード中にその処理を持ってきたく思っています。 /* foreach($mystery_noun as $mystery_key => $mystery_value){ __foreach($mecab_noun as $mecab_key => $mecab_value){ ____if($mystery_key == $mecab_key){ ______ここにその質問の処理を記述する。 ____} __} } */ ある連想配列のキー(文字列)が一致した場合、そのキーに対するインデックスを0→1に変更します。 尚、$mystery_noun、$mecab_nounの連想配列全てのインデックスには、それぞれ1,0が格納されています。

    • ベストアンサー
    • PHP
  • SQL文の実行結果を変数で受けて、それを連想配列に格納したいです。

    SQL文の実行結果を変数で受けて、それを連想配列に格納したいです。 (カラム名を連想配列のキーにします。) また、値をHTMLエスケープ処理したいと考えています。 下記のソースを書いてみましたが、配列$all[]にうまく入りません。 $qresult = mysql_query($qstring); $all = array(); while (list ($key, $val) = mysql_fetch_assoc($qresult)){  $all[$key] = htmlentities($val, ENT_QUOTES,EUCJP); } また、3行目をeach(mysql_fetch_assoc($qresult))に変更してもみましたが、 「Variable passed to each() is not an array or object」エラーが出ます。 mysql_fetch_assocの戻り値は連想配列では無いのでしょうか。 $qresult = mysql_query($qstring); $all = array(); while ($rec = mysql_fetch_assoc($result)){  $all[] = $rec; } 上記だと問題なく取得出来るのですが。。。 何が悪いのでしょうか。

    • ベストアンサー
    • PHP
  • AJAXでサーバーにある連想配列を取り出す

    こんにちは。PHP学習者です。 ブラウザ上でAJAXを使って、サーバーにあるPHPで作ったデータファイルを取得する方法は知っていますが、連想配列を取得することは出来ますか? 今までは連想配列をわざわざテキストファイルに書き換えてからAJAXで取得していましたが、もし直接取得する方法があれば知りたいと思いました。 詳しい方、どうかよろしくご教授ください。お願いします。

  • 連想配列の配列の使い方

    C言語でいうところの構造体の配列(要素は"hoge"と"fuga"のみ)を perlで表現する場合、連想配列の配列にするのが一般的でしょうか? 以下の様なソースコードなのですが、perlらしさが失われている気がします。 perlらしく書くとしたらどう書くのが良いでしょうか? [ソース] @list; #この配列の要素に連想配列を入れる sub input{ #list.txtの中にはhogeとfugaの値がカンマ区切りで記入されている open(IN, "list.txt");  $i = 0; while ($xx = <IN>) { ($list[$i]{"hoge"}, $list[$i]{"fuga"}) = split /,/, $xx; $i++; } close(IN); } sub output{ for($i = 0; $i <= $#list; $i++){ print $list[$i]{"hoge"}, $list[$i]{"fuga"}; } }

    • ベストアンサー
    • Perl
  • 検索結果を改行させるには??

    <br>検索結果<br> <?php if($num_rows== 0){ $message="該当するデータはありませんでした"; } else $message=$num_rows ."件ヒットしました"; echo $message; ?> <br><table border=1><tr><td>地域</td><td>職種</td><td>雇用形態</td><td>会社名</td><br> <?php $tr['tiiki'] = ''; $tr['syoku'] = ''; $tr['koyou'] = ''; $tr['kai'] = ''; while($row = mysql_fetch_array($result)){ $tr['tiiki'] .= "<td>".htmlspecialchars($row['tiiki'], ENT_QUOTES)."</td>"; $tr['syoku'] .= "<td>".htmlspecialchars($row['syoku'], ENT_QUOTES)."</td>"; $tr['koyou'] .= "<td>".htmlspecialchars($row['koyou'], ENT_QUOTES)."</td>"; $tr['kai'] .= "<td>".htmlspecialchars($row['kai'], ENT_QUOTES)."<td>"; } ?> <table> <tr><?php print $tr['tiiki'];?><?php print $tr['syoku'];?><?php print $tr['koyou'];?><?php print $tr['kai'];?></tr> </table> このソースだと 東京 神奈川 製造 建築 派遣 バイト 山田鞄 後藤組 のようにごちゃ混ぜになります。 「東京 製造 派遣 山田鞄 神奈川 建築 バイト 後藤組」 こんな感じに表示させるにはどうすれば良いですか??

    • 締切済み
    • PHP
  • 連想配列と別配列とのマッチング

    以下の連想配列と別にあるテキストファイルを配列にして ”マッチした商品名の全てのデータを表示したいです。 ■連想配列の形↓■ 50を超えるリンゴの種類が、以下のような 連想配列($alldata)の形であります。 $alldata = [1]=> array(5) { ["no"]=> string(1) "1" ["name"]=> string(5) "san-tugaru" ["color"]=> string(3) "red" ["price"]=> string(3) "150" ["memo"]=> string(10) "aomori" } [2]=> array(5) { ["no"]=> string(1) "2" ["name"]=> string(5) "ko-gyoku" ["color"]=> string(3) "red" ["price"]=> string(3) "250" ["memo"]=> string(10) "yamagata" } というふうに50個のリンゴのデータ続きます。 リンゴの配列情報の詳細は以下の通りです。 ※配列のKeyの番号とvalueの商品Noは同じで連想配列にしています。 商品No ["no"] 名称  ["name"] 色   ["color"] 価格  ["price"] 産地  ["memo"] +-------------------------------------------------+ ■テキストファイル(select-ringo.txt)の内容と意味■ このテキストファイルは、商品No「4、5、12、30」の リンゴを選んで表示したい場合です。 +----+ 4,1,10 5,4,13 12,2,9 30,3,15 +----+ ◇カンマで区切られた数字の意味◇ ・各行の先頭の数字は「商品No.」を選択します。 ・カンマで区切られた2番目の数字は、”色”を選択します。 たとえば、1行目であれば、 商品No 4 の全ての情報は カラー1=#ff0000 echo表示されます。 他の番号の場合は色は以下の通りです。 カラー1 =#ff0000 カラー2 =#ff6600 カラー3 =#ff0066 カラー4 =#ff3399 ・3番目の数字はフォントサイズ(px)を意味します。 +---------------------------------------------------+ テキストファイルに”商品番号のみ”を入れると以下のスクリプトで動作しますが、 カンマで区切った場合のマッチング方法に悩んでいます。 ※以前、こちらで親切な方に方法を教えていただきました↓ $selectNo = array_map(rtrim, file("select-ringo.txt")); foreach ($selectNo as $num) { if (is_numeric($num) && array_key_exists($num, $alldata)) { 表示 } } みなさん、お力をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう