この記事はPHP総復習カレンダー3日目の記事です!
関数って言ってたけど先に配列を書いちゃったよ(´・ω・`)
引数とか出てきちゃうけど追記するので察してください・・・。
配列とは
配列は「複数の値をしまっておく箱」のようなものです。
配列として宣言すると、中身が空っぽでも配列になります。
配列の宣言と同時に値を入れることができます。
<?php
$days = []; // $daysは配列
$family = ['dad', 'mom', 'son', 'daughter']; // $familyは配列
※PHPでの配列の書き方は5.4以降変更されました。
配列の添字
配列に列挙された中身には、添字という要素の場所を表すものがあります。
添字は0から順番に0,1,2..となります。添字をつけると配列の要素にアクセスすることができます。
<?php
// 添字は0, 1, 2, 3
$family = ['dad', 'mom', 'son', 'daughter'];
echo $family[0]; // 'dad'
echo $family[3]; // 'daughter'
連想配列
添字の代わりに、要素に名前(キー)をつけてアクセスすることができます。
<?php
$family_name = [
'dad' => 'Bob',
'mom' => 'Jessy',
'son' => 'James',
'daughter' => 'Emily'
];
echo $family_name['dad']; // 'Bob'
要素の追加
末尾に要素を追加
配列の末尾に新しい要素を追加するには以下のように記述します。
<?php
// 添字配列の場合
$family = ['dad', 'mom', 'son', 'daughter'];
$family[] = 'puppy'; // 配列の末尾に要素を追加
echo $family[4]; // 'puppy'
// 連想配列の場合
$family_name = [
'dad' => 'Bob',
'mom' => 'Jessy',
'son' => 'James',
'daughter' => 'Emily'
];
$family_name['puppy'] = 'John';
echo $family_name['puppy']; // 'John'
先頭に要素を追加
先頭に追加する場合はarray_unshift()
を使います。
<?php
$family = ['dad', 'mom', 'son', 'daughter'];
array_unshift($family, 'grandma');
// $familyは['grandma', 'dad', 'mom', 'son', 'daughter']になる
任意の場所に要素を追加
配列の途中に要素を差し込むなら以下。
array_splice()
はもともと要素を置換する関数なのですが、第3引数に0を指定すると要素を消去せず差し込めます。
<?php
$family = ['dad', 'mom', 'son'];
// $family[2]の前に'uncle'を追加
array_splice($family, 2, 0, 'uncle');
// ['dad', 'mom', 'uncle', 'son']
複数の要素を追加
array_push()
を使って一度に複数要素を追加することもできます。
<?php
$family = ['dad', 'mom', 'son'];
array_push($family, 'puppy', 'citty');
// ['dad', 'mom', 'son', 'puppy', 'citty']
array_merge()
を使うと配列と配列を結合。
<?php
$family = ['dad', 'mom', 'son'];
$add_member = ['grandma', 'grandpa'];
$new_family = array_merge($add_member, $family);
// $new_familyは['grandma', 'grandpa', 'dad', 'mom', 'son']
※array_mergeの場合、元の配列($family
)には影響しない
多次元配列
配列の要素には配列を持たせることができます。
<?php
$families = [
[
'dad', 'mom', 'son'
],
[
'dad', 'mom', 'daughter'
]
];
echo $families[0][0]; // 'dad'
echo $families[1][2]; // 'daughter'
// $families['Smith']と$families['Williams']はそれぞれ配列
もちろん連想配列を多次元配列にすることもできます。
<?php
$families = [
'Smith' => [
'dad' => 'Bob',
'mom' => 'Jessy',
'son' => 'James'
],
'Williams' => [
'dad' => 'Michael',
'mom' => 'Jessy',
'daughter' => 'Emily'
]
];
echo $families['Smith']['dad']; // 'Bob'
ここでの $families['Smith']['mom']
の'Jessy'と$families['Williams']['mom']
の'Jessy'は、同じ文字列ですが別物です。
スミス家のジェシーさんとウィリアム家のジェシーさんですね。
この辺、プログラミング始めたばっかの時「ハァ?(^p^)」ってなったんだよなあ。。
PHPの配列での注意
PHPの場合は添字配列と連想配列が同じ「配列型」の扱いです。添字配列と連想配列を混ぜたり、ループ処理などでもほぼ同じように扱えるのですが、他の言語だと扱いそのものが違うので注意です!
まとめ
配列は奥が深くて、他にも配列に係る関数等々たくさんあるのですが、初心者向けということでまたの機会に!
下記の記事たちが参考になるので是非見てみてください。(勝手にリンクすいません)
[[PHP] 配列・連想配列の初期化、結合、追加]
(http://qiita.com/shuntaro_tamura/items/784cfd61f355516dfff0)