配列は、複数のデータを一つの変数で管理できるデータ構造です。例えば、複数の果物の名前を保存したい場合、配列を使えば一つの変数にすべての名前を格納できます。
配列の宣言
配列の定義は、以下のように行います。
[要素1, 要素2,…]
$fruitList = ['apple', 'grape', 'orange'];
または
array(要素1, 要素2,…)
$fruitList = array('apple', 'grape', 'orange');
どちらの定義方法でも同じ結果になります。
以下のようにstringやint、bool型などを同じ配列にまとめることが可能です。(あまりおすすめはしません)
$my_array = [123, 'grape', True];
要素の追加
1つ追加する
1つだけ要素を追加する場合、以下のように記述します。
配列[] = 要素
$fruitList = ['apple', 'grape', 'orange'];
$fruitList[] = 'banana';
var_export($fruitList);
出力
array (
0 => 'apple',
1 => 'grape',
2 => 'orange',
3 => 'banana',
)
複数追加する
複数の要素を追加する場合、array_push関数を使います。
array_push(対象の配列, 追加要素1, 追加要素2, …)
$fruitList = ['apple', 'grape', 'orange'];
array_push($fruitList, 'banana', 'kiwi');
var_export($fruitList);
出力
array (
0 => 'apple',
1 => 'grape',
2 => 'orange',
3 => 'banana',
4 => 'kiwi',
)
配列の途中に追加する
配列の途中に追加するには、array_splice関数を使います。
array_splice(対象の配列, 追加するインデックス, 0, 要素)
$fruitList = ['apple', 'grape', 'orange'];
array_splice($fruitList, 1, 0, 'banana');
var_export($fruitList);
出力
array (
0 => 'apple',
1 => 'banana',
2 => 'grape',
3 => 'orange',
)
要素の変更
各要素の変更は、[インデックス] = 要素 で行います。
配列[インデックス] = 要素
$fruitList = ['apple', 'grape', 'orange'];
$fruitList[0] = 'lemon';
var_export($fruitList);
出力
array (
0 => 'lemon',
1 => 'grape',
2 => 'orange',
)
要素の削除
要素の削除にはunset関数を使います。
unset(配列要素)
$fruitList = ['apple', 'grape', 'orange'];
unset($fruitList[1]);
var_export($fruitList);
出力
array (
0 => 'apple',
2 => 'orange',
)
要素は削除できたのですが、インデックスが[0, 2]という歯抜けの状態になっています。
インデックスの歯抜け状態を解消するには、array_values関数でインデックスを振りなおす必要があります。
$fruitList = ['apple', 'grape', 'orange'];
unset($fruitList[1]);
$fruitList = array_values($fruitList);
var_export($fruitList);
配列のインデックスを上記の例では、インデックスを振り直した$fruitListを再代入しています。
出力
array (
0 => 'apple',
1 => 'orange',
)
要素へのアクセス
各要素へのアクセス
各要素へのアクセスは、[] で行います。
配列[インデックス]
$fruitList = ['apple', 'grape', 'orange'];
print $fruitList[0];
出力
'apple'
すべての要素へのアクセス
foreach文によるアクセス
foreach文を使うと、配列の先頭から順にアクセスできます。構文は以下のようになります。
foreach(配列 as $value) {
// 処理
}
$value変数にアクセスする要素が順に代入されていきます。
要素を先頭から出力するコードは以下になります。
$fruitList = ['apple', 'grape', 'orange'];
foreach($fruitList as $fruit) {
print $fruit . PHP_EOL;
}
出力
'apple'
'grape'
'orange'
$fruitListの先頭から順に取得した$fruitを、改行文字(PHP_EOL)と併せて出力しています。
for文によるアクセス
下記のコードは全要素を先頭から順番に出力しています。
$fruitList = ['apple', 'grape', 'orange'];
$fruitListCount = count($fruitList);
for($i = 0; $i < $fruitListCount; $i++) {
print $fruitList[$i] . PHP_EOL;
}
count関数によって、$fruitListの要素の個数を$fruitListCountに格納しています。
foreach文と比較すると、インデックスの指定や要素数など必要な記述が多くなります。ですが、foreach文以上に柔軟な記述が可能です。
まとめ
配列要素の削除など、PHPでは特殊な記述が必要なことがあります。そのような一連の処理を関数でまとめると扱いやすくなるので、実装してみるのもおすすめです。
コメント