PHPで配列の検索方法

このQ&Aのポイント
  • PHPで配列の中から特定の要素を検索する方法について教えてください。
  • 具体的には、2次元配列の中から指定した値に対応する要素を探し出して、別の配列に格納したいです。
  • 探したい要素が$hogehoge[0]に対応する場合、どのように実装すればいいでしょうか。
回答を見る
  • ベストアンサー

PHPで配列の検索方法

PHPで下のような2次元配列があったとします。(りんご=a、みかん=bのような意味です。CSVからデータを2次元配列に格納したものです。) $data[0][0]="りんご" , $data[0][1]="a" $data[1][0]="みかん" , $data[1][1]="b" $data[2][0]="ばなな" , $data[2][1]="c" $data[3][0]="ぶどう" , $data[3][1]="d" ここで下のような1次元配列$hogeがあったとき $hoge[0]="ばなな" , $hoge[1]="りんご" 新たに1次元配列$hogehogeを用意して、2次元配列の中から"りんご"や"ばなな"に対応する文字列を探し出して $hogehoge[0]="c" , $hogehoge[1]="a" と、格納したいのですが、やり方がわかりません。 イメージとしまして、 $hoge[0]→($data[0][0]~$data[3][0]の中から探す)→($data[2][0]であるとわかる)→($data[2][0]に対応するのは$data[2][1]だとわかる)→($hogehoge[0]=cと格納) もし分かる方がおられましたらお願いします。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

二重にループしてみては? <?PHP $data=array( array("りんご" , "a") ,array("みかん" , "b") ,array("ばなな" , "c") ,array("ぶどう" , "d") ); $hoge=array("ばなな","りんご"); $hogehoge=array(); foreach($hoge as $key=>$val){ foreach($data as $array){ if($array[0]===$val){ $hogehoge[$key]=$array[1]; break; } } } print_r($hogehoge); ?>

関連するQ&A

  • 2次元の配列にデータを格納したい

    hoge.txtの様なファイルがあって、この値を2次元の配列に格納したいのですが、簡単に実現することは可能でしょうか? open (FILE, "hoge.txt"); foreach (<FILE>) { # この中で、2次元の配列に格納したい } hoge.txt A  1 B  2 C  3

    • ベストアンサー
    • Perl
  • C#です。データの出力について

    C#です。 二次元配列に格納したデータをメモ帳に出力したいのですが、どうすればいいですか? 二次元なので、それぞれをカンマで区切って出力したいのですが、やり方がわかりません。教えて下さい(><) 例)りんご,1   トマト,2   バナナ,3   みかん,4 などの二次元配列をこのように、カンマで区切った状態で出力したいんです。できれば具体的にプログラムを教えていただけると嬉しいです。

  • 多次元配列

    初歩的な質問ですみません。 PHPプログラミングでの質問です。 仮に、多次元配列Aに、 Array( [0] => Array ( [0] => 6 ) [1] => Array ( [0] => 2 [1] => 1 ) [2] => Array ( [0] => 0 [1] => 5 [2] => 4 ) ) 多次元配列Bに、 Array( [0] => Array ( [0] => りんご ) [1] => Array ( [0] => ぶどう [1] => パイナップル ) [2] => Array ( [0] => みかん [1] => すいか [2] => メロン ) ) のように値が入っている場合、配列Aの値を参照して 値の大きいものから順に、それに対応する配列Bの値を取り出し、 あたらしい配列Cに代入する処理の書き方を教えて下さい。 上記の例ですと、配列Cが、 Array ( [0] => りんご [1] => すいか [2] => メロン [3] => ぶどう [4] => パイナップル [5] => みかん ) となるようにしたいです。 よろしくお願いします。 長文失礼しました。

    • ベストアンサー
    • PHP
  • 多次元配列の一次元目の最大値の求め方

    多次元配列の一次元目の最大値の求め方 下記のような多次元配列(ちなみに、これって二次元配列ですか?)があるとき、 常に、「一次元目の最大値+1」を返すようにしたいのですが、 どうすればよいのでしょうか? $data[0][0]とか$data[1][0]とか$data[2][0]とかの最大値の意味です。 下記の例でいくと、一次元目の最大値が3なので、数値の4を返したいのですが…、 ■$data 1,0,A1,B1,C1 2,5,A2,B2,C2 3,0,A3,B3,C3 3,2,A4,B4,C4

    • ベストアンサー
    • PHP
  • [Excel]行列の中の検索について

    現在使用しているのがExcel2007です。 例えば以下のような配列があったとします。 A1(=りんご) B1(=1) C1(=3) D1(=5) A2(=みかん) B2(=2) C2(=4) D2(=6) A3(=ばなな) B3(=7) C3(=8) D3(=9) このときにA4に"3"を入力したらB4に"りんご" A4に"8"と入力したら"ばなな" などと選択されるような関数がどうしても作成できません。 ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • PHPの配列でわからないことがあるので教えてください。

    PHPの配列でわからないことがあるので教えてください。 例えば以下のような2つの配列$aと$bがあるとします。 $a[0]=a、$a[1]=b、$a[2]=c $b[0]=w、$b[1]=q、$b[2]=b、$b[3]=c これで、$a[1]と$b[2]の中身が同じであることを取得し、さらに$bの配列の添え字の2を返すようにしたいのですが、わかりません。 どのようにプログラムを書けばよいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 並べ替え方法

    A列 B列 C列 D列 E列 品目 単価 個数 (イメージ) りんご 100 50 りんご 100 60 りんご 110 りんご 90 80 りんご 80 みかん 50 30 30 みかん 50 20 みかん みかん 40 40 みかん 60 バナナ 150 30 バナナ 150 40 バナナ 70 バナナ 140 50 バナナ 90 A列 B列 C列のデータがランダムにあるとしてそれを 品目ごと単価ごとに集約して D列 E列に集計するにはどうしたら良いですか? お詳しい方がいらしたら、どうかご教授ください。

  • phpでXML等のデータを取るとき、多次元配列の扱い方について

    phpでRSS等のXMLファイルを、 XMLファイルを配列に変換するライブラリ等で配列に変換するとします。 XMLの入れ子の深いところにあるデータは $row['hoge']['1200']['hogehoge']['hoge-5']['data']等と (配列名は仮名) と、配列階層が深すぎてとても長くなってしまいます。 実際は、10以上の深い階層になることもありえます。 取得するデータが膨大になると、混乱してくるおそれもあるので これを何とか簡略したいのですが、 深い多次元配列を簡略的に把握する良い方法があれば アドバイスをお願いいたします。

    • ベストアンサー
    • PHP
  • 特定の要素を抜き取って連想配列へ

    例えば、 $hoge = "%_A_%あ%_A_%%_B_%123%_B_%%_C_%%_C_%%_D_%hogehoge%_D_%"; というようなデータがあった場合、 %_?_% の?部分を連想配列のキーとして、 そのはさまれた部分を前途キーの内容として格納したいのですが、 どのようにすればいいでしょうか? (%_?_%~%_?_% において?の組み合わせは必ず単一でしか存在しません) 求めている結果は $array['A'] => あ $array['B'] => 123 $array['C'] => //空要素 $array['D'] => hogehoge のような形です とりあえず if (preg_match("/%_([A-Z])_%(.*)%_$1_%/" , $hoge ,$matched) ){ // $matchedを解析して$arrayに割り当て } とすればいけるかな、と思いやってみましたがパターンマッチの条件にすら当てはまらず撃沈 preg_matchのマッチ条件内ではまだ$1が使えないようでした 環境はPHP4です よろしくお願いします

    • ベストアンサー
    • PHP
  • PHPの配列について

    PHPの配列についての質問です。 以下のソースを // == ソース == function hoge( $foo ) { $arrs['a'] = 'A'. $foo; $arrs['b'] = 'B'. $foo; $arrs['c'] = 'C'. $foo; $arrs['d'] = 'D'. $foo; } hoge( '3' ); hoge( '9' ); // == /ソース == 実行すると print_rは // == print_r == Array (   [a] => A3   [b] => B3   [c] => C3   [d] => D3 ) Array (   [a] => A9   [b] => B9   [c] => C9   [d] => D9 ) // == /print_r == のようになります。 これを 関数を実行するごとに (0から IDのような 配列を組むようにする) 以下のようにするには どのようにすればよいでしょうか? // == print_r == Array (   [0] => Array     (       [a] => A3       [b] => B3       [c] => C3       [d] => D3     )   [1] => Array     (       [a] => A9       [b] => B9       [c] => C9       [d] => D9     ) ) // == /print_r == 使用目的は get_contentsしたものを正規表現で取り出し 配列にする処理に使おうと思っています。

    • ベストアンサー
    • PHP

専門家に質問してみよう