- ベストアンサー
配列の要素をキーにする
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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); ?>
その他の回答 (2)
- wp_
- ベストアンサー率54% (132/242)
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)
<?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
- 配列操作について
お世話になります。 $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
お礼
ご回答ありがとうございます。 回答通りの記述でうまくできました。 ありがとうございました。