Ext JSやRapid Driveなど
システム開発の技術情報をご紹介。

お問い合わせ 資料請求 無料見積り

お電話でお気軽にお問い合わせくださいTel 03-6805-2904 営業時間 [平日]AM 9:30 - PM 6:30

変数と配列

変数と配列について

インデックスが文字列の連想配列

文字列をインデックスに割り当てる

配列となっているインデックスには、数字だけでなく、文字列を割り当てることもできます。

インデックスに文字列を割り当て
<?php
    $animal[ "dog" ] = "犬";
    $animal[ "cat" ] = "猫";
    $animal[ "horse" ] = "馬";

    echo "$animal[ cat ]<br />¥n";
    echo "$animal[ dog ]<br />¥n";
?>
実行結果
猫
犬

前述のスクリプトは連想配列と呼ばれるもので、各動物の英語表記と日本語表記が対応しています。

対応している、一番目の値の英語表記がインデックスに割り当てられます。スクリプトでは一番目には「犬」を記述していますが、echoではじめに[cat]を記述してるので、「猫」が表示されます。「馬」はechoしていませんので、表示はされません。また、犬なのでかならず["dog"]としなければいけないわけではありません。["pig"]としても=(イコール)の右辺が"犬"であり、echoに「$animal[ pig ]」とすれば、犬が表示されます。ただ、連想しやすい記述をしたほうが望ましいでしょう。

以上のスクリプトのように["dog"] = "犬"と関連付けることから、連想配列と呼ばれます。

ループを使って連想配列の値を出力する

連想配列は、インデックスに文字列を割り当てているために、通常の配列のようにループの回数を使用して配列の値を出力することができません。ですが、list関数each関数を使用することによって、同じように出力させることができます。

list関数とeach関数で値を出力する
<?php
    $animal = array( "dog" => "犬", "cat" => "猫", "hose" => "馬" );

    while( list( $key, $val ) = each( $animal ) ) {

        echo ( "インデックスの $key は、$val です<br />¥n" );

    }
?>
実行結果
インデックスの dog は、犬 です
インデックスの cat は、猫 です
インデックスの hose は、馬 です

前述のスクリプトではeach関数によって、連想配列の$animalの値をキーと値のペアで返し、list関数は複数の変数への代入を行うことができ、ここでは変数$keyと$valに出力する値を割り当てています。また、通常each()はその特性によりlist()と共に使用されます。

「while」は、繰り返しの処理をさせるために使用しています。もし、ここで「while」ではなく「if」を使用したのなら実行の結果は、「インデックスの dog は、犬 です」のみが表示されます。

連想配列をソートする

連想配列では以下の関数を使用することにより、インデックスと値の関係を保持したまま、並びを変更することができます。

asort()連想配列を昇順に並び替える。
arsort()連想配列を降順に並び替える。
ksort()連想配列のインデックスの昇順に並び替える。
krsort()連想配列のインデックスの降順に並び替える。
連想配列$animalを降順に並び替える
<?php
    $animal = array( "dog" => "犬", "cat" => "猫", "hose" => "馬" );
    arsort( $animal );

    while( list( $key, $val ) = each( $animal ) ) {

        echo( "インデックスの $key は、$val です<br />¥n" );
    }
?>
実行結果
インデックスの hose は、馬 です
インデックスの cat は、猫 です
インデックスの dog は、犬 です

前述のスクリプトでは、arsort()によって降順に出力されていることがわかります。