• ベストアンサー

配列の要素をキーにする

Array (   [Id] => Array     (       [0] => 17       [1] => 18     )   [Name] => Array     (       [0] => 山田       [1] => 田中     ) ) のような配列があります。 これを、 Array (   [17] => 山田   [18] => 田中 ) のようにしたいのですが、どのようにすればよいでしょうか。 初心者質問で申し訳ないのですが、ご教授のほど宜しくお願い致します。

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

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

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

foreachでやるといいでしょう。 <?PHP $array_org=Array( 'Id' => Array(0 => 17,1 => 18) ,'Name' => Array(0 => '山田',1 => '田中') ); foreach($array_org['Id'] as $key=>$val){ $array_new[$val]=$array_org['Name'][$key]; } print_r($array_new); ?>

niguotd
質問者

お礼

ご回答ありがとうございます。 回答通りの記述でうまくできました。 ありがとうございました。

その他の回答 (2)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

forなら以下の感じ。 $arrSeed = arrry(  'id' => array(   0=>17   ,1=>18  )  ,'name'=> array(   0=>'たなか'   ,1=>'やまだ'  ) ); $ret = array(); for($ii=0;$ii<count($arrSeed['id']);$ii++) {  $ret[ $arrSeed['id'][$ii] ] = $arrSeed['name'][$ii]; } print_r($ret);

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

<?php $name_array = array(17 => "山田", "田中"); print_r($name_array); ?> って意味じゃなくて?

関連するQ&A

  • 多次元配列で特定キーが重複している箇所をランダムで

    PHP多次元配列で特定キーが重複している箇所をランダムで1つだけ表示したい ・id基準 ■元配列 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [2] => Array     (       [id] => 5       [name] => "鈴木"       [age] => 12     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ■取得したいランダム結果配列例1 Array (   [0] => Array     (       [id] => 5       [name] => "佐藤"       [age] => 5     )   [3] => Array     (       [id] => 8       [name] => "山田"       [age] => 17     ) ■取得したいランダム結果配列例2 Array (   [1] => Array     (       [id] => 5       [name] => "伊藤"       [age] => 7     )   [4] => Array     (       [id] => 8       [name] => "奈良"       [age] => 2     ) ※1次元目のキーは元キーを維持していなくても構いません

    • ベストアンサー
    • PHP
  • 多次元配列の入れ替え

    いつもお世話になります。 PHPで多次元配列の入れ替えについて悩んでおります。 以下のようなデフォルトの配列から、整形後の配列 へ変換したいのですが、どのように扱ってよいか 頭が回らず困っています。 2次元目のクラスが等しいもののidをキーとして、 名前を値としたいのですが。。。 どうぞ宜しくお願いします(>へ<) //デフォルトの配列 Array (   [0] => Array     (       [id] => 1       [class] => A       [name] => 佐藤     )   [1] => Array     (       [id] => 2       [class] => A       [name] => 山下     )   [2] => Array     (       [id] => 3       [class] => B       [name] => 田中     )   [3] => Array     (       [id] => 4       [class] => B       [name] => 高橋     ) ) //整形後の配列 Array (   [A] => Array     (       [1] => 佐藤       [2] => 山下     )        [B] => Array     (       [3] => 田中       [4] => 高橋     )      )

    • ベストアンサー
    • PHP
  • 多次元配列を2次元の連想配列で表したい

    PHP初心者です。 $category = array( array( 'ライフ' ), array( 'デジタルライフ', array( '携帯・PHS' ), array( 'ワンセグ放送' ) ), array( '趣味', array( 'AV機器', array( 'オーディオ' ), ), ), ); このような多次元配列を $new_category = array( array( 'id'=> '1', 'parent_id' => '-', 'name' => 'ライフ', ), array( 'id'=> '2', 'parent_id' =>'-', 'name' => 'デジタルライフ', ), array( 'id'=> '3', 'parent_id' => '2', 'name' => '携帯・PHS', ), array( 'id'=> 4, 'parent_id' => '2', 'name' => 'ワンセグ放送', ), array( 'id'=> 5, 'parent_id' => '-', 'name' => '趣味', ), array( 'id'=> '6', 'parent_id' => '5', 'name' => 'AV機器', ), ); このような二次元配列に変換したいです。 parent_idを入れておく配列を作って、階層が深くなったら前の要素のIDを配列に入れ、浅くなったら配列の末尾の要素を消去する…みたいなことを考えてあれこれやってみたのですが、なかなかうまくいきません。 何か良い方法がありましたら、教えていただけるとありたがいです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 多次元配列から作った表の重複行をまとめたい

    データベースからある期限(14年3月21日から3月30日)で取得した下記の多次元配列から日付に該当するデータがあればセルに値を入れて表を作ったのですが、 <?php $cal=array( array("type" => 19, "name" => "山田", "hour" => 5, "day" => 2014-03-21), array("type" => 19, "name" => "山田", "hour" => 8, "day" => 2014-03-24), array("type" => 19, "name" => "山田", "hour" => 8, "day" => 2014-03-26), array("type" => 19, "name" => "田中", "hour" => 8, "day" => 2014-03-23), array("type" => 19, "name" => "田中", "hour" => 8, "day" => 2014-03-26), array("type" => 19, "name" => "田中", "hour" => 3, "day" => 2014-03-28), array("type" => 20, "name" => "大田", "hour" => 3, "day" => 2014-03-21), array("type" => 20, "name" => "大田", "hour" => 5, "day" => 2014-03-27), array("type" => 20, "name" => "田中", "hour" => 3, "day" => 2014-03-24), array("type" => 20, "name" => "田中", "hour" => 4, "day" => 2014-03-27), array("type" => 0, "name" => "高橋", "hour" => 1, "day" => 2014-03-27), ); ?> <?php foreach ( $cal as $val ) : ?> <tr> <td><?php echo $val['type']; ?></td> <td><?php echo $val['name']; ?></td> <?php for ( $i = 21; $i <= 30; $i ++ ) : ?> <td> <?php if ( $day == $i ) { echo $val['hour']; } ?> </td> <?php endfor; ?> </tr> <?php endforeach; ?> 同じIDと名前の行が複数あり、同じIDと名前の行をひとつにしたいのです(画像参照)がわからず質問させていただきました。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 多次元配列で、foreachを使って、key値を

    多次元配列で、foreachを使って、key値を入れ替えているのですが、 なんで、こうなるか分かりません。  $x = array();  $x[] = array(   "id" => 1,   "name" => "JavaScript",  );  $x[] = array(   "id" => 5,   "name" => "PHP",  );  $z = array();  foreach($x as $key => $value){   $z[$value["id"]] = $value;   }  print_r($z); 配列のKEYをIDに変更しているのですが、 なんで、こうなるのでしょうか? 特に、  $z[$value["id"]] = $value; が分かりません。 例えば、foerachの途中で、var_dumpすると、 1回目だと、 ◆$key 0 ◆$value Array (  [id] => 1  [name] => JavaScript ) ◆$value["id"] 1 まではいいのですが、 ◆$z[$value["id"]] の値が見れません。 ここはどんな処理をやっているのでしょうか?

    • ベストアンサー
    • PHP
  • snotty

    はじめまして。 PHPの配列で悩んでいます。詳細は下記の通りです。 array { [0]=> array { ["name"]=>"田中一郎" ["price"]=>4000 } [1]=> array { ["name"]=>"高橋太郎" ["price"]=>5000 } [2]=> array { ["name"]=>"田中一郎" ["price"]=>5000 } } 上記のような配列があった場合、["name"]でグループ化し、 ["price"]の合計を出したいのです。 下記のような配列にしたいのです。 array { [0]=> array { ["name"]=>"田中一郎" ["price"]=>9000 } [1]=> array { ["name"]=>"高橋太郎" ["price"]=>5000 } } 上記のように、「田中一郎」をグループ化し、グループ化した合計の配列化したいのですが、何かよい方法等ありますでしょうか? 申し訳ありませんが、ご教授よろしくお願いします

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

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

    • ベストアンサー
    • PHP
  • 配列操作

    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
  • 配列操作について

    お世話になります。 $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
  • foreachで多次元配列を生成

    こんにちわ。 配列をforeachでループさせて、それを多次元配列に入れていくことは可能でしょ うか? 例えば以下のようなデータがあるとします。 ---meibo.dat-------- c21<>田中<>21<>東京 c22<>佐藤<>22<>大阪 -------------------- ---test.php----------------------------------------------------- <? $list_meibo = file("meibo.dat"); foreach($list_meibo as $temp){    $i=split("<>",$temp);    $a=array($i[0] => array("name"=>$i[1],"age"=>$i[2],"ad"=>$i[3]),); } ?> ------------------------------------------------------------------- これでは $a=array("c21"=>array("name"=>"田中","age"=>"21","ad"=>"東京"), "c22"=>array("name"=>"佐藤",age"=>"21","ad"=>"大阪"),); という具合になってくれないでしょうか? これでいくと、配列の最後の要素のみデータに残ります。 どのようにしたらよいでしょうか? ご教授お願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう