みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

多次元配列で、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"]]
の値が見れません。
ここはどんな処理をやっているのでしょうか?

投稿日時 - 2011-05-15 22:11:28

QNo.6740314

暇なときに回答ください

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

たぶんこういうこと?

<?PHP
$x= array(
array("id" => 1,"name" => "JavaScript"),
array("id" => 5,"name" => "PHP")
);
$z = array();
foreach($x as $key => $value){
$z[$value["id"]]["id"] = $value["id"];
$z[$value["id"]]["name"] = $value["name"];
}
print_r($z);
?>

投稿日時 - 2011-05-16 10:32:25

お礼

ありがとうございましたー

投稿日時 - 2011-06-07 20:46:54

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

$value["id"] が1となっているので、$z[$value["id"]]は、$z[1]もしくは、$z["1"]となってます。

$z[$value["id"]] = $value で、$valueは、Array([id] => 1, [name] => JavaScript)という仮想配列ですから、
print_rだと Arrayと表示されるのでしょう。

結果として、どうなって欲しいのかが、わからないので、手直しはできませんが、処理的には、上記のような状態になってます。

投稿日時 - 2011-05-15 22:47:52

お礼

ありがとうございましたー

投稿日時 - 2011-06-07 20:47:24