配列操作について

このQ&Aのポイント
  • 配列操作についての質問です。オブジェクトの最下層の連想配列データを配列にする方法について教えてください。
  • 配列操作についての質問です。配列から最下層の連想配列データを取得する方法について教えてください。
  • 配列操作についての質問です。オブジェクトの最下層の連想配列データを簡潔に取得する方法について教えてください。
回答を見る
  • ベストアンサー

配列操作について

お世話になります。 $obj = array(1 array(id=>111 name=>aaa date=yyyymmdd array(2 array(id=>222 name=>bbb date=yyyymmdd 上記のようなオブジェクト($obj)があるとして この最下層の連想配列データ(id,name,date)を 配列にしたい時は、以下のような書き方で取れると 思いますが、もっとすっきりさせる書き方などありますか? $a = array(); $c = count($obj); for($i=0; $i<$c; $i++){ $a = $obj[$i]['id']; $a = $obj[$i]['name']; $a = $obj[$i]['date']; $i++}

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

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

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

ご質問の内容が、PHPの記述として正しくないため、回答が間違っているかもしれませんが、 <?php $new_obj = array(); foreach($obj as $o){ $new_obj[] = array($o['id'], $o['name'], $o['date']); } ?> でどうでしょう。 尚、id,name,dateは、必ず同一の並び順で入ってくるのであれば、 $new_obj[] = array_values($o); でも良いです。

TOBBYS
質問者

お礼

hogehoge78さん レスポンスありがとうございます。 $new_obj[] = array_values($o); をforeachでやりたいことが出来そうです。 PHPがまだイマイチわかってないので 勉強させて頂きます。

その他の回答 (1)

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

なにがしたいかよくわかりませんが・・・ 配列の最後のデータをとりたいということ? 提示のソースは$aにどんどん代入していますね 単にポップするだけではだめなのですか? <? $obj =array( 1=>array("id"=>"111","name"=>"aaa","date"=>"yyyymmdd") ,2=>array("id"=>"222","name"=>"bbb","date"=>"yyyymmdd") ); $a=array_pop($obj); print_r($a); ?>

TOBBYS
質問者

補足

yambejpさん 当方、PHP初心者なので、説明がうまくなくてすみません。 やりたいこととしては、 配列A(配列B(値))になっているものを 配列B(値)にしたいということです。 (2階層になっている配列を1階層にしたい) 宜しくお願いします。

関連するQ&A

  • 配列操作

    Array ( [0] => Array ( [Category] => Array ( [cate_id] => 1 [category_name] => AAA ) ) [1] => Array ( [Category] => Array ( [cate_id] => 2 [category_name] => BBB ) ) ) 上記、配列で[Category]の部分のみ(0、1共に)を削除したいのですが、どのようにすればよろしいでしょうか?

    • ベストアンサー
    • PHP
  • 配列の置き換え

    PHPで教えて欲しいです。 例えば、 $aaa = Array ( [0] => Array ( [id] => 1 [date] => 2009-07-14 [b1] => [b2] => [b3] => [b4] => [b5] => ) [1] => Array ( [id] => 1 [date] => 2009-07-15 [b1] => [b2] => [b3] => [b4] => [b5] => ) と言うような配列があります(実際にはキーは0から13まで固定) そこにもうひとつの配列 $bbb = Array ( [0] => Array ( [id] => 1 [date] => 2009-07-15 [b1] => true [b2] => false [b3] => true [b4] => false [b5] => true ) があります(キーは最大13個ですが、毎回不定数) このような場合で、$aaa配列の[date]と$bbb配列の[date]が同じ物が有った場合、$aaa配列の該当する部分の値を、$bbb配列の値で置き換えたいのですが、どのような方法があるでしょうか? お願いいたします。

    • 締切済み
    • PHP
  • 2つの配列を比較し、一致しないのを得たいのですが

    連想配列 $foo = array( "aaa" => "111", "bbb" => "222", "ccc" => "333" ); と 一般配列 $bar = array( 0 => "aaa", 1 => "bbb" ); がある場合に、$iを数字として、 $fooのkey部と$bar[$i]の値が一致したら(つまり、例えばaaa)、 $fooの中のその部分は除去するような事がやりたいのですがどのようにすればいいのでしょうか? 色々試してみましたが、自分には全く出来ませんでした。 除去ではなく、新しい配列に $hoge = array( "ccc" => "333" ) のような形で入れ込むのでもいいのですが、とくかく$hogeのような配列を手に入れたいと考えております。 アドバイス頂けないでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 配列の変更

    上のような配列を、下の配列にしたいのですが、どうすれば良いでしょうか? Array (   [0] => 2   [id] => 2   [1] => 名前   [name] => 名前   [2] => タイトル   [title] => タイトル )   ↓ Array (   [id] => 2   [name] => 名前   [title] => タイトル ) また、上の配列は、何と言うのでしょうか? 連想配列?

    • ベストアンサー
    • PHP
  • 配列の受け渡し

    こんばんは。 あるページで使用した配列を他のページでも使いたいのですが、 こういう配列を格納した変数の受け渡しって出来るのでしょうか? 普通の変数のデータを受け渡したかったら <input type="hidden" />で直接valueに変数の値を入れれば良いですが、 配列だと自分では以下のように愚直にやる方法しか分かりません。 もっとちゃんと渡せる方法ってあるのでしょうか? <?$a=array(1,2,3,4,5);?> <? for($i=0;$i<count($aaa);$i++){ ?> <input type="hidden" value="<?=$aaa[$i]?>" name="hoge[]"/> <?}?>

    • ベストアンサー
    • PHP
  • c言語 配列

    関数の中で複数の値を配列で返したいのですが,どうすればいいでしょう? 配列を関数に渡す時にはアドレスが渡されるので,ポインタと同様関数内で値を変えればmain関数の値も変わるのではないかと思ったのですが,上手くいきません. 知りたいのは,main関数の中の配列(できれば2次元配列)の値を他の関数から値を変更する方法です.下のプログラムはためしに書いてみたものです.質問を理解するうえで役立てば幸いです. #include<stdio.h> void func(double aaa[][3] ,double bbb[]); void main(void){ double array_a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; double array_b[3]={0}; func(array_a,array_b); } void func(double aaa[][3] ,double bbb[]) { int i,j; for (i=0;i<3;i++) { for (j=0;j<3;j++) { bbb[i]=bbb[i]+aaa[i][j]; } } }

  • 連想配列を複数条件で比較して別配列に抽出したい

    idとnameとcountとその他のいろいろな要素を持つ連想配列entryがあります。 entry id name count … ------------- 1 satou 35 2 satou 49 3 sio   18 4 sio   29 5 sio   39 6 sio   40 7 miso  28 : -------------- データベースの操作で同じidのcountのみを更新したいため、このentryから、「nameが同じで、countが最大のものを抽出した3次元の連想配列entry2」を作成したいです。 entry2 id name count  ------------- 2 satou 49 6 sio   40 7 miso  28 : -------------- このような働きをするphpのコードを教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • php5のxpathで結果を連想配列で得るには?

    こんにちは。xpathの結果を連想配列で取得したいのですが、どうすればよいのかわかりません。 ソースは foreach($xml->xpath("/aaa/bbb_id[@id='1']/*") as $key => $value) { $array['$key'] = $value; } という感じで、指定したidの中に存在する子エレメント全て取得しています。 が、$keyは0,1,2...と数字で返ってきてしまいます。 そうではなくて、例えば <aaa> <bbb_id id=1> <hoge>value</hoge> </bbb_id> </aaa> で、"value"を取得したら$keyにはhogeが入ってほしいのですが、どのように書けばいいのでしょうか?

    • ベストアンサー
    • PHP
  • 多次元配列とfor文について

    javascriptの配列について質問です。 例えば: var arrXXX = new Array(); function samplefunc{ //3次元配列の種類の作成 for (m = 0; m < aaa.length ; m++) { //連想配列作成 arrXXX .push(aaa[m]); } for (j = 0; j < bbb.length; j++) { for (i = 0; i < ccc.length; i++) { arrXXX[aaa[j]] = new Array(ccc.length); arrXXX[aaa[j]][i] = new Array(ccc.length); for (k = 0; k < ddd.length; k++) { arrXXX[aaa[j]][i][k] = eee;     ここでは配列を適切に使える・・・ } } } ここでarrXXXを使いたいが、3次元配列でなくなっている?!  arrXXX[~][0][0]はnullまたはオブジェクトではありません・・・がでます。 } 結局、for文を完全にでてしまうと、せっかくつくった配列がダメになってしまいます。どうすればfor文外で配列を使用できるのか教えてください!

  • 連想配列の一部分を全て表示したいのですが・・。

    すみません。phpの事はあまりわからないのですが、以下のような連想配列がありまして、 (下記のような連想配列が大量にあります。) Array ( [0] => Array ( [a] => 1111 [0] => 1111 [b] => 2222 [1] => 2222 [c] => 3333 [2] => 3333 ) [1] => Array ( [a] => 5555 [0] => 5555 [b] => 6666 [1] => 6666 [c] => 7777 [2] => 7777 ) ) 上の配列から下記の配列のみ全て表示したいのですがどう記述したらよいでしょうか。 Array[0][a] Array[0][b] Array[0][c] Array[1][a] Array[1][b] Array[1][c]

    • ベストアンサー
    • PHP

専門家に質問してみよう