30
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

一人PHP総復習Advent Calendar 2016

Day 3

【PHP】配列

Last updated at Posted at 2016-12-04

この記事は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】連想配列、配列への追加

[[PHP] 配列・連想配列の初期化、結合、追加]
(http://qiita.com/shuntaro_tamura/items/784cfd61f355516dfff0)

30
42
0

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
30
42

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?