• ベストアンサー

連想配列からの値の取り出し

お世話様です。 タイトルにもありますが連想配列を作成した後(以下に記述例)に その配列からキーを指定して値を取得したいと思っております。 array_keys関数だと値を指定してキーを取得するみたいで うまくいきませんでした。 何かよい方法ありませんでしょうか? //配列に格納 while (条件) {   $aParaOra += array((キー) => (値)); }

  • PHP
  • 回答数3
  • ありがとう数0

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

  • ベストアンサー
  • karace
  • ベストアンサー率45% (9/20)
回答No.3

解答番号No.1の者です。 ちなみに、キーの指定なしで全部取得するのであれば、 array_values($aParaOra) で、配列化されたものが返ってきます。 もしくは、以下のようにforeachでループすれば、 キーと値を分離して取得できます。 foreach ($aParaOra as $key => $value) { # $aParaOra[$key]の値が、$value } 質問者さんが何をしたいのかがいまいちピンときません。

その他の回答 (2)

回答No.2

foreach ($hoge as $key => $value) { }

  • karace
  • ベストアンサー率45% (9/20)
回答No.1

まず、明示されてる連想配列の作り方だと、 以下のような連想配列が出来上がると思いますが、これでいいですか? $aParaOra = array(); $i = 0; while($i < 3){ $aParaOra += array( "key$i" => "value$i"); $i++; } var_dump($aParaOra); ---var_dump結果-------- array 'key0' => string 'value0' (length=6) 'key1' => string 'value1' (length=6) 'key2' => string 'value2' (length=6) ------------------------ で、キーを指定して値を取りたいとのことですが、 $aParaOra['key0'] とすれば 'value0'が取得できるのは当然ですが、 この方法しかありません。 それから、キーを複数個指定して、 値を配列で返すような関数は無いので、以下のようなものを作るしかないです。 # キー指定の配列作成 $return = array(); $array = ('key0','key1','key2'); foreach( $array as $value ){ # 指定したキーの値を配列に格納 $return[] = $aParaOra[$value]; } > array_keys関数だと値を指定してキーを取得するみたいで..... これは、配列の中でキーは重複できないからです。 値は重複してもいいので、この関数の意義はそこにあります。 $aParaOraが、以下のような配列だった場合、 ---------- array 'key0' => string 'value' (length=6) 'key1' => string 'value' (length=6) 'key2' => string 'value2' (length=6) ---------- array_keys($aParaOra, 'value') とすれば、'key0','key1'のキーが返ってきます。

関連するQ&A

  • 連想配列を処理するにあたって

    お世話になっております。 連想配列について質問させて頂きます。 以下のような、キーに文字列、インデックスに数字を指定している連想配列があるとします。 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
  • 連想配列でこういう処理をする関数を探しています

    PHP5.2.4を使用しています。 どういうふうに説明してよいのか分かりませんが、 $arr = array(  'key1' => array('value1'=>1,'value2'=>11),  'key2' => array('value1'=>2,'value2'=>22),  'key3' => array('value1'=>3,'value2'=>33), ); という連想配列を例えばキー'value2'の値だけが欲しく、 $arr = array(  'key1' => 11,  'key2' => 22,  'key3' => 33, ); と、変換したいのですが、そのような関数はあるのでしょうか? またこのような処理をする関数を自作する場合、 どのような関数名が適切でしょうか?(array_○○○)

    • ベストアンサー
    • PHP
  • 配列型の宣言?

    こんにちは。 あるサイトで見たphpのサンプルなのですが、 postされた全ての値を配列に格納するもので、以下のような記述がありました。 foreach((array)$_POST as $key => $value){  $array[$key] = $value; } ポストされた全ての値を、配列$arrayに連想配列として格納しているのはわかるのですが、 foreachの、(array)というのはどういう働きをするものなのでしょうか。 これは、$_POSTが配列であるという宣言でしょうか。 それと、postされた値がない場合、$_POSTを配列だと宣言しておくことで、foreachのエラーを回避するような役割もあるのでしょうか。 恥ずかしながら、(array)のような記述をphpではあまり見ないような気がするのですが、なんというキーワード(?)で勉強すれば理解が深められるかもご教授頂けますと助かります。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 関数戻り値が連想配列の場合

    こんにちわ。 PHP5について質問です。 あるユーザ関数の戻り値が連想配列である場合、 ユーザ関数の実行~戻値の特定のキーの値を取得 までを1行で取得する方法があれば教えてください。 例) function hoge() {  return array("fuga" => "1", "moge" => "2"); } ここで"moge"の値を一発で参照したいと考えています。 通常では、 $result = hoge(); print $result["moge"]; のようにしていますが、これを一行で実現できる方法はありますでしょうか。

    • ベストアンサー
    • PHP
  • 連想配列(PHP 対 JavaScript)

    こんにちは。質問をさせてください。 PHPでOracleのデータを取得してそのデータを連想配列に格納するとします。 /------- PHP内でのソース -----------------/ (例) $Count:検索データ数  for($cnt=0;$cnt<$Count;$cnt++){ $data[$cnt] = "取得したデータ";  Fech(次のレコードを取得する); } 上記で取得した連想配列の値をJavaScriptでしようしたいのですが うまくいきません。 JavaScriptではArrayに取得したデータを格納したいのです。 (例) /-- JavaScript内のソース Afor2=new Array("取得data1","取得data2",・・・"最後の取得data"); としてHTMLの何かのイベント時にしようしたいと考えています。 今僕は以下のような動きをしたいです。 /----以下、JavaScriptでの記述-----------------/ var New_Array=new Array(5); for(i=0;i<<?=$Count?>;i++){ document.form.cmb_box.options[i] = new Option(<?=$data[i]?>, i); } のようなことをしたいのですが。 (もちろん上記はだめですが・・・) 質問がわかりにくくて大変もうしわけありませんが、 アドバイス、質問などよろしくお願いいたします。

    • 締切済み
    • PHP
  • 配列内の値を分解して再格納

    配列の中で「~」が含まれている値の「~」を取って 別々の値として格納するにはどうすれば良いでしょうか。 例 array(1,4,5~7,3~4,2)⇒array(1,4,5,7,3,4,2)

    • ベストアンサー
    • 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
  • JavaScriptの連想配列について

    myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C001"] = "C001";    myArray["A001"]["B002"]["C002"] = "C002";  myArray["A002"] = "A002"; JavaScriptの連想配列について質問させて頂きます。 例えば上記のような配列があったとして、値とキーはそのままで "C001" と "C002" の"B002"配列への格納順序だけ入れ替えたい場合、 どのように実装すればよろしいでしょうか? ちなみにキーや値はサンプルで実際にはsort出来るルールはありません。。。 ※入れ替え後のイメージ --------------------------------------------------------------------- myArray = new Array();  myArray["A001"] = new Array();   myArray["A001"]["B001"] = "B001";   myArray["A001"]["B002"] = new Array();    myArray["A001"]["B002"]["C002"] = "C002"; ←格納順序が    myArray["A001"]["B002"]["C001"] = "C001";  入れ替わった  myArray["A002"] = "A002"; ---------------------------------------------------------------------

  • 配列や連想配列について

    言語一般の配列や連想配列について 最近どういう解釈をしていいのか わからなくなってしまいました。 仮にPerlで話をさせてもらいますと、 連想配列%FORMがあるとき、 個々の要素にアクセスする場合 例えば$FORM{'name'}などと記述しますが、 この$FORM{'name'}を みなさんはどのように解釈しているでしょうか? $FORM{' '}にキー nameを 代入しているようなイメージで、 「連想配列%FORMからキー'name'の値を取得する」 という考え方でしょうか? わたしは最近、 $FORM{'name'}はそれ自体が一つの変数という 考え方が出来るのではないかという気がしているのですが、 連想配列の実装から考えると この考え方は正しいのでしょうか? 以前、配列について同様の質問を したことがあります。 例えばC言語でint a[100]と宣言した場合は、 連続的なアドレスに確保されるため、 a[2]はaという名前のアドレスから a + 2 番目の場所という意味になるが、 言語によっては不連続なアドレスに 確保されるため、a[2]は一つの変数名として 考える必要がある・・ との回答でした。 ならば連想配列の場合も もし不連続なアドレスに確保されるならば、 $FORM{'name'} は一つの変数名と 考えたほうが正しいのではないかと 思ったからです。 連想配列の内部的な処理がどうなっているのか 教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 連想配列の文字コードを変換

    あるクラスから渡された連想配列値の文字コードはUTF-8です。 連想配列に格納されている値の文字コードをSJISに変換したいのですが、単に md_convert_encoding($array_values,'sjis','auto') ではうまくできません。 どうすれば変更できるのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう