【PHP】配列について
ここでは、WordPressでPHPを使うことを前提として、配列について説明します。超ざっくり理解したい人はここ(https://wa3.i-3-i.info/word11924.html)を参照してください。
- 配列とは何か
- 配列の構造と種類
- 配列の使い方/使用例
配列とは何か
配列(Array)とは変数を複数まとめて連ねた変数(データ構造)です。変数を「値を入れる箱」というイメージで考えると、配列は「その箱が連なってる棚」みたいなイメージになります。なので、配列には複数の値が入っています。
配列の構造と種類
配列の構造
配列には複数の箱(部屋)が連なっていますが、その中の特定の部屋から値を取り出したいとき、どの部屋かを指定する必要があります。この部屋の指定に用いる表札やラベルのことを添え字といいます。例えば、ある配列型の変数「 $sample_array = array('肉','野菜','米'); 」があるとします。ここから配列まるごと変数に代入したいときは、「 $var = $sample_array; 」と書きます。しかし'肉'の値、つまり1番目の部屋の値だけ欲しいときは、「 $var = $sample_array[0]; 」と書きます。この[0]の部分が添え字です。通常の配列の場合、添え字は0始まりの番号です。
配列の種類
通常の配列が「 $sample_array = array('肉','野菜','米'); 」のような配列だとすると、他に覚えておきたい配列として二種類あげられます。
まず連想配列というものがあり「 $sample_array = array('like'=>'肉','hate'=>'野菜','need'=>'米'); 」といった形で記述されます。これは添え字で0始まりの番号ではなく、任意の文字列にしたいときにこのように記述して連想配列にします(ほかの言語だと辞書配列と言ったりもします)。この連想配列の添え字を「キー」と呼びますが、添え字のことだと思ってください。このとき'肉'の値を取り出したい場合は、「 $var = $sample_array['like']; 」と書きます。キーは一つの配列につき重複が許されません。
また、配列では配列の中に配列を入れることも可能です。配列が階層的になり、表や空間で図示されることから、このような配列を多次元配列といいます。二次元くらいまでは頻繁に使いますが、あくまで配列の中に配列が入っているだけなので難しく考える必要はありません。例えば二次元配列の例としてこんなものが挙げられます。
「 $sample_array = array('like'=>array( '肉', '魚' ),'hate'=>'野菜','need'=>'米'); 」
このとき'魚'の値だけを取り出す際の書き方は「 $var = $sample_array['like'][1]; 」となります。この二次元配列は一階層目が連想配列で、二階層目は通常の添え字の配列です。
配列の使い方/使用例
foreachで使う
配列と親和性の高いコード(アルゴリズム)として頻繁に使うのがforeachを使ったコーディングです。例えばアーカイブページでは、$postsという配列型の変数を使って、一部屋ずつ配列の中身を取り出す動きをしています。簡単な例で書くと、さっきの「 $sample_array = array('肉','野菜','米'); 」をforeachに入れた場合、「foreach( $sample_array as $sample){ echo $sample; };」と書けば'肉','野菜','米'の順に計3回echoされる動きになります。
上記の例では、foreach(){}の「()」内に配列変数を入れることで、自動的にループの回と配列の順が一致しました。しかし「()」内に配列変数を入れずに配列の順番を一致させるケースもあります。例えば下記のような例です。
この例では、$sample_array02の方を、添え字に$iをセットすることで取り出す番号とループの回数を一致させています。ループをカウントする変数は慣習的に$iとし、初期値を添え字の初期値である0に合わせるのが一般的です。ちなみに上記の例は簡易的なもので、$sample_array01と$sample_array02の配列の長さが同じであることを前提に動かしていますが、実際のコーディングでは長さが違う場合も考慮した条件分岐が必要です。
print_r()で中身を確認し、取り出す
WordPress標準の関数を使っていると戻り値が配列であるパターンが結構多いです。というのも戻り値は変数一つだけしか指定できませんが、それを配列にすれば戻り値として必要な複数の値をまとめて渡せるからです。しかし、そうすると自分に必要な値が配列のどの部屋に入っているか想像しづらい場合があります。そういったときは、配列をまとめて表示するPHP標準の関数である「print_r()」でデバッグ出力をすることで確認できます。例えばwp_get_attachment_image_src()でサムネイル画像のURLを取得したいとします。
上記を見ればwp_get_attachment_image_srcの戻り値の配列の添え字[0]にURLが格納されていることが分かるのでそこから値を取り出せます。他にもvar_dump()など、値を取り出して確認するための関数が用意されているのでいろいろ試してみてください。
株式会社ビーエムビー
〒114-0031 東京都北区十条仲原1-4-8 商店街会館311 TEL&FAX:03-5948-5996
東京都北区のWEBやDTP(印刷物)のデザイン制作会社です。ホームページ制作やLP(ランディングページ)の作成、ECサイト(楽天ストアなど)の構築などのWEBデザイン、チラシ・ポスター・名刺・パンフレット・看板などの印刷物デザインに対応しています。お客様の業務形態や用途に合わせたwordpressによるCMSサイトをフルスクラッチにて構築することが可能です。お気軽にお問い合わせください。