81
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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と連携して
色々な要素を持ったデータを扱うときにめちゃくちゃ苦労します。(しました。)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
81
Help us understand the problem. What are the problem?