@ PHP

array:配列

通常の変数ではデータを1つしか代入することができません。しかし、配列を使うと、1つの変数名に複数の値を代入することができます。

配列は [ ] または array() を使って設定します。

配列の考え方

変数 $a に配列(“山田”,”田中”,”高橋”)を代入します。ひとつひとつの要素は$a[0]、$a[1]、・・・と表します。
[0]は、配列のインデックス番号(key ともいいます)で、[0]から始はじまります。

array_01.php

<?php
$a = ["山田","田中","高橋"];
echo $a[0]."<br>\n";
print_r($a);
?>

インデックスと値の関連を示して配列を設定する

=> を使ってインデックスと値の関連を示して配列を設定することもできます。

array_02.php

<?php
$a = [ 0 => "山田", 1 => "田中", 2 => "高橋" ];
echo $a[0]."<br>\n";
print_r($a);
?>

数値と文字列など、異なった型の変数を1つの配列に設定する

数値と文字列など、異なった型の変数を1つの配列に設定することもできます

array_03.php

<?php
$a = [ "高橋", 28 ];
echo $a[0]."<br>\n";
print_r($a);
?>

配列の要素に値を代入する

配列の要素に値を代入することもできます。

array_04.php

<?php
$a = [ "ID:1","ID:2","ID:3" ];
$a[0] = "山田";
$a[2] = "田中";
$a[1] = "高橋";
echo $a[0]."<br>\n";
print_r($a);
?>

連想配列

インデックスには文字列を使うこともできます。インデックスに文字列を使った配列を連想配列といいます。

array_05.php

<?php
$data= [
    '名前' => '山田',
    '出身' => '函館',
    '性別' => '女性',
    'メールアドレス' => 'yamada@example.com'
];
echo $data['メールアドレス']."<br>\n";
print_r($data);
?>

多次元配列

配列の中に配列が入っている配列を多次元配列をいいます。

array_06.php

<?php
$data = [
    '山田' => [
        'ID' => '001',
        '出身' => '函館',
        '性別' => '女性',
        'メールアドレス' => 'yamada@example.com'
    ],
    '田中' => [
        'ID' => '002',
        '性別' => '男性',
        'メールアドレス' => 'tanaka@example.com'
    ],
    '高橋' => [
        'ID' => '003',
        '出身' => '札幌',
        '性別' => '女性',
        'メールアドレス' => 'takahasi@example.com'
    ]
];
echo $data['山田']['メールアドレス']."<br>\n";
print_r($data);
?>

for 文を使って配列要素の値を取得する

count() を使って配列の要素の数を数え、for 文の繰り返し条件にします。

array_07.php

<?php
// 単純配列
$user  = ["山田", "田中", "高橋"];

$count = count($user);
for ($i = 0; $i < $count; ++ $i) {
    echo $user[$i] . "<br>\n";
};
?>

連想配列の場合は、each() を使って配列から現在のキーと値のペアを取得し、list() にセットした変数に代入します。

array_08.php

<?php
// 連想配列
$user = [
    '名前' => '山田',
    '出身' => '函館',
    '性別' => '女性',
    'メールアドレス' => 'yamada@example.com'
];

$count = count($user);
for ($i = 0; $i < $count; ++ $i) {
    list ($key, $val) = each($user);
    echo $key . ' => ' . $val . "<br>\n";
?>

while 文を使って配列要素の値を取得する

単純配列の配列では、for 文同様に count() を使って配列の要素の数を数え、while 文の繰り返し条件にします。

array_09.php

<?php
// 単純配列
$user  = ["山田", "田中", "高橋"];

$count = count( $user );
$i = 0;
while( $i < $count ) {
    echo $user[$i] . "<br>\n";
    $i++;
}
?>

current() と next() を使い while 文を組み立てることもできますが、配列の要素が 0 や null の場合、そこで処理が中断してしまいます。

array_10.php

<?php
// 単純配列
$user  = ["山田", null, "高橋"];

while( $val = current( $user ) ) {
    echo $val . "<br>\n";
    next( $user );
}
?>

連想配列の場合は、for 文同様に each() を使って配列から現在のキーと値のペアを取得し、list() にセットした変数に代入します。

array_11.php

<?php
// 連想配列
$user = [
    '名前' => '山田',
    '出身' => '函館',
    '性別' => '女性',
    'メールアドレス' => 'yamada@example.com'
];

while( list( $key , $val ) = each( $user ) ) {
    echo $key .' => '. $val . "<br>\n";
}
?>

foreach 文を使って配列要素の値を取得する

foreach 文を使った多次元連想配列の処理例は次のようになります。

array_12.php

<?php
$data = [
    '山田' => [
        'ID' => '001',
        '出身' => '函館',
        '性別' => '女性',
        'メールアドレス' => 'yamada@example.com'
    ],
    '田中' => [
        'ID' => '002',
        '性別' => '男性',
        'メールアドレス' => 'tanaka@example.com'
    ],
    '高橋' => [
        'ID' => '003',
        '出身' => '札幌',
        '性別' => '女性',
        'メールアドレス' => 'takahasi@example.com'
    ]
];
foreach ($data as $key => $value) {
    foreach ($value as $k => $v) {
        print $k . ' => ' . $v."<br>\n";
    }
}
?>