連想配列

キーが文字列の配列

配列の添字が文字列になっているものを連想配列と呼びます。

連想配列とは

連想配列とは、配列の値を取り出すキーに文字列を用いる配列のことです。 単純な配列だと、$favorites[0] のように、何番めの要素か数字で指定しますね。 連想配列では、数字の代わりに、$favorites["food"] のように文字列をキーとして、対応する値を得ることができます。

連想配列の利点

第一の利点は、人間にとって参照しやすい、ということがあげられます。 キーに適切な意味を与えておけば、配列の引数の順序で参照するよりも楽になります。

$accessories = array (
"necklace" => "pearl",
"wallet" => "python",
"ring" => "ruby" );

上の例のように定義しておけば、$accessories["ring"]ruby を得ることができます。 配列の順序をプログラマーが記憶しておく必要がありません。

キーと値のペアを取得するには

キーと値をペアで取得する方法はいくつかあります。 良く使われるのは、eachlistを用いる方法、foreachを用いる方法です。

eachlistを用いる

eachlistを用いる例は、下のようになります。

list( $key, $value ) = each( $accessories ) ;

上のように記述すると、$keyにキーが、$valueに値が格納されます。 内部ポインタが指している箇所のキーと値が格納されます。

内部ポインタとは、PHPが配列に付けている目印のようなものです。each関数は、配列から読み出し、目印を次の要素に移動させます。 このため、eachを繰り返し用いると、配列の要素を順に取得することができます。

while( list( $key, $value ) = each( $accessories )) {
    ループ処理
}

上のループ処理後は、内部ポインタが末尾になっています。 この配列に対して再度処理する場合は、resetで内部ポインタを戻す必要があるので注意しましょう。

foreachを用いる

foreachを用いる例は、下のようになります。

<?php
foreach($accessories as $key => $value) {
    ループ処理
}
?>

foreach関数は内部ポインタをリセットして(先頭に戻して)から実行されます。

連想配列のソート

キーを用いてソートする場合は、ksortkrsortを利用します。ksortは昇順で、krsortは降順でソートします。

値を用いてソートする場合は、asortarsortを利用します。asortは昇順で、arsortは降順でソートします。 ※連想配列をsortrsortでソートすると、単純な配列として処理される(キーと値の対応関係が失われる)ので注意しましょう。

Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.