LoginSignup
68
79

More than 5 years have passed since last update.

PHPの多次元配列と連想配列についてのサンプル。

Last updated at Posted at 2014-05-12

PHPの配列について学んできましたので、自分で噛み砕いて理解するために投稿させていただきます。

配列、多次元配列、連想配列?

配列は、数学B的に考えると
A = (1,4,5)
こんな感じで、1列1行は1。みたいな。あのノリがそのままプログラムの配列でも適応できそうです。

多次元配列は
A = (B,C,D)
B = (E,F,G)
F = 3;
まぁ仮にですけど。これを紐解くとAのBのEは3。のような感じ。配列の中に配列を入れているのが多次元配列、だと勝手に思っています。

次に連想配列。これが
生徒 = (山田,田中,高橋)
山田 = (ID,出身,性別)
出身 = (東京)
生徒の山田の出身は東京!

”何”番目が”何”番目が”あれ” ではなく
”生徒”の”田中”の”性別”が”男” が連想配列です。

纏めると...

上記の感じのデータを一纏めにしたのが配列です。
そのような配列に配列をどんどん入れていくのを多次元配列。
そして、「自分で適当に識別名」を用いるのが連想配列。

下記は研修で作成したコードですが、サンプルに載せておきます。

<?php
//下記にプログラムを記載してください。
$list = array(
  '山田' => array(
      'ID' => '001', 
      '出身' => '函館', 
      'メールアドレス' => 'yamada@example.com',
      '性別' => '女性'
  ),
  '田中' => array(
      'ID' => '002', 
      'メールアドレス' => 'tanaka@example.com',
      '性別'  => '男性'
  ),
  '高橋' => array(
      'ID' => '003', 
      '出身' => '札幌', 
      'メールアドレス' => 'takahasi@example.com',
      '性別'  => '女性',
  ),
  '井上' => array(
      'ID' => '004', 
      '出身' => '東京', 
      'メールアドレス' => 'inoue@example.com',
      '性別'  => '男性',
  ),
  '小林' => array(
      'ID' => '005', 
      '出身' => '大阪', 
      'メールアドレス' => 'kobayasi@example.com',
      '性別'  => '男性',
  ),
  '森' => array(
      'ID' => '006', 
      '出身' => '沖縄', 
      'メールアドレス' => 'mori@example.com',
      '性別'  => '女性',
  )
);

$i = 0;
//配列の中の名前を出す。
foreach($list as $key => $member){
  echo $key;
  if($i < count($list)-1){
    echo ',';
  }
  $i++;
}

//改行。
echo PHP_EOL;

//配列の中の名前を出す。
echo join(",",array_keys($list)).PHP_EOL;


//出身地札幌の人間を表示する
foreach($list as $key => $member){
  if(!isset($member['出身']) || $member['出身'] != '札幌'){
    echo $key.PHP_EOL;
  }
}

?>

こんな感じで多次元配列を作れるようです。
ビルドしていると、きちんと出ると思います。

この部分を理解しておかないとMySQLと連携して
色々な要素を持ったデータを扱うときにめちゃくちゃ苦労します。(しました。)

68
79
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
68
79