【freo】【freo講座】【初心者の為のfreoテンプレート編集講座】【基本編(09)】多次元配列について
前回、配列と連想配列を解説しましたが、今回も配列の続きです。
PHPでは、配列に更に配列を組んで使うことができます。
これを多次元配列と言います。
多次元配列の解説とfreoでの使用例を説明します。
多次元配列とは
前回は、配列でお皿の上に乗っている果物を配列や連想配列で表現しました。
今回は、多次元配列でお皿の上に乗っている果物の名前・個数・価格を表現してみようと思います。
まずは前回のおさらいです。
果物 | $fruits |
0 | リンゴ |
1 | ミカン |
2 | ブドウ |
これが前回お皿の上に乗っている果物を配列で表現した表でした。
今回は、果物の名前だけでなく、個数、価格も表現したいので、まずは名前・個数・価格が格納できるように値のセルを分割してみます。
果物 | $fruits |
0 | リンゴ |
3 | |
300 | |
1 | ミカン |
4 | |
400 | |
2 | ブドウ |
5 | |
500 |
セルを分割して、リンゴ、ミカン、ブドウのそれぞれの名前・個数・価格を記入してみました。
さて、このままでは「$fruits[0]」と表現したときにどの名前・個数・価格のどれを表示すればいいのかわかりません。
ですので、値を呼び出すためのキーになる列を新しく増やそうと思います。
果物 | $fruits | |
0 | 0 | リンゴ |
1 | 3 | |
2 | 300 | |
1 | 0 | ミカン |
1 | 4 | |
2 | 400 | |
2 | 0 | ブドウ |
1 | 5 | |
2 | 500 |
■の色の行を増やしました、デフォルトではキーにはインデックスが振られます。
これで準備は完了です。
では、この配列の値を呼び出してみます。
前回のおさらいになりますが、配列の値は
{$配列変数[キー]}
という書くことによって呼び出すことができます。
今回はキーが複数あるので、書き方は以下のようになります。
{$配列変数[キー][キー]}
つまり、リンゴの値段を取り出したいなら「{$fruits[0][2]}」になり、ミカンの個数を取り出したいなら「{$fruits[1][1]}」になり、ブドウの名前を取り出したいなら「{$fruits[2][0]}」になります。
このように、配列の中で複数のキーを扱うものを、多次元配列といいます。
今回の場合は、キーを2つ使っているので、二次元配列ですね。
キーが3つなら三次元配列ですし、4つなら四次元配列ですし、全部まとめて多次元配列です。
配列のキーが3個以上のときは、
{$配列変数[キー][キー][キー]…}
と、キーを[](大カッコ)に挟んで延々とつなげていけばOKです。
多次元連想配列について
多次元配列のキーにインデックスではなく文字列を使って、多次元連想配列とすることもできます。
今回のような例だと、インデックスよりも文字列を使った方が分かりやすいと思います。
上でつくった多次元配列によるリンゴ・ミカン・ブドウの表の、キーに文字列にして作り直してみました。
果物 | $fruits | |
apple | name | リンゴ |
number | 3 | |
price | 300 | |
orange | name | ミカン |
number | 4 | |
price | 400 | |
grape | name | ブドウ |
number | 5 | |
price | 500 |
こうすると、どの値がどういう意味なのかさっきよりはわかりやすくなったと思います。
さて、値を呼び出す時の書き方ですが、多次元配列のときとは違うので、注意が必要です。
{$配列変数.キー.キー.キー…}
多次元配列のときは[](大カッコ)に挟んで表示していましたが、今度は.(ドット)で繋げています。
例えば、上記の表でリンゴの値段を取り出したいなら「{$fruits.apple.price}」になり、ミカンの個数を取り出したいなら「{$fruits.orange.number}」になり、ブドウの名前を取り出したいなら「{$fruits.grape.name}」になります。
多次元連想配列の例題
多次元連想配列に慣れるために、多次元連想配列のサンプルを用意しました。
お時間がおありの方は、下の表を見て、例題に答えてみてください。
多次元連想配列 のサンプル |
$sample | |||||
earth | japan | tokyo | name | 東京都 | ||
population | 13227730人 | |||||
aichi | name | 愛知県 | ||||
population | 7414863人 | |||||
osaka | name | 大阪府 | ||||
population | 8864959人 | |||||
america | washington | name | ワシントン州 | |||
population | 19378102人 | |||||
newyork | name | ニューヨーク州 | ||||
population | 6724540人 |
【例題1】大阪府の人口を多次元連想配列を使って呼び出すとき、どのように書くでしょうか?
【答え(要反転)】{$sample.earth.japan.osaka.population}
【例題2】{$sample.earth.america.washington.name}と書くと、どのように表示されますか?
【答え(要反転)】ワシントン州
freoでの多次元連想配列の使用例
freoのconfigフォルダ内の情報を取ってみる
多次元連想配列がfreoでどのように使われているのか見てみます。
[freo/templates/header.html]をエディタで開いてください。
33行目に、「{$freo.config.basis.title}」と書かれています。
【基本編(2)】変数と値でさらっと触れていますが、{$freo.config.basis.title}とは、「freoの管理ページ→システム→設定管理→基本設定で設定したfreoのタイトル」です。
よくよく見てみると{$freo.config.basis.title}は多次元連想配列の形で書かれているので、せっかくなので表にしてみます。
freoの基本情報 | $freo | ||
config | basis | title | タイトル |
こんな感じになりました。
$freoには、freoの設定(管理メニューで設定した内容)や、プラグインの情報や、[freo/config.php]に登録された情報など、freoについての様々な情報が格納されています。
なので、説明のところは「freo基本情報」としてみました。
{$freo.config.basis.title}の他にも、「$freo」から始まる多次元連想配列で取れる情報がいくつかあるので、それも見ていこうと思います。
[freo/templates/header.html]の34行目には、{$freo.config.basis.description}と書いてあります。
これは「freoの管理ページ→システム→設定管理→基本設定で設定したfreoの概要」になっています。
{$freo.config.basis.title}も{$freo.config.basis.description}も「freoの管理ページ→システム→設定管理→基本設定で設定し」た内容を表示しています。
基本設定画面では、タイトル・概要の他に、メールアドレス等も設定できるのですが、例えばこのメールアドレスを表示したい場合は、{$freo.config.basis}まではそのままにして、キーの部分をメールアドレスのキーに変更すればいいんじゃないかと推測できます。
では、どう書けばメールアドレスを表示できるかを説明します。
[freo/configs/basis.ini]をエディタで開いてください。
18~19行目に、
mail_from = "example@example.com"
と書いてあります。
configフォルダのiniファイルは、freoについての設定項目名と値が記録されているログファイルです。
↑では、19行目「mail_from = "example@example.com"」の左辺が設定項目名、右辺が値になります。
そして、この左辺の部分が、{$freo.config.basis}に続けるキーになります。
ですので、「{$freo.config.basis.mail_from}」と記述すれば、メールアドレス(デフォルトでは「example@example.com」)という値が表示されるはずです。
せっかくなんで表にしときました。↓
freoの基本情報 | $freo | ||
config | basis | title | タイトル |
description | 概要 | ||
mail_from | メールアドレス |
ワンポイント
ちなみに、[freo/configs]フォルダの中にはbasis.iniファイル以外にも様々な設定ファイルがあります。
当然、それらの設定ファイルで設定された値を取る時にも{$freo.config}配列は使えます。
あんまり使わなそうですが、取りたい場合は、{$freo.config.設定ファイルの名前.設定ファイルの項目名}で取れます。
また、[freo/configs/plugins]フォルダ内の設定ファイルの内容を取りたい場合は、{$freo.config.plugin.プラグインID.設定項目名}で取れます。
たとえば、メール送信プラグインのメール送信先を取りたい場合は、{$freo.config.plugin.contact.address}になります。
freoの基本的な情報を取ってみる
さて、「{$freo」から始まる多次元連想配列は、他にもあります。
[freo/templates/header.html]の14行目には、
と書いてあります。
この、{$freo.core.http_url}がなにかというと、[freo/config.php]で設定したfreoの設置URLです。
(ちなみに、{$smarty.const.FREO_CSS_DIR}は同じく[freo/config.php]で設定したCSSディレクトリのパスになっています。)
ほかにも、[freo/templates/header.html]の33行目のAタグの中を見てみると、<a href="{$freo.core.http_file}">
と書かれていますが、これは[freo/config.php]で登録したfreo設置URLに「index.php」がついて表示されます。
freoの基本情報については、公式の「freoの基本的な情報を取得する」ページで詳しく解説されているので、そちらも参考にしてください。
ここまでで説明したfreoで使っている多次元連想配列とかを表にしておきました。
freoの基本情報 | $freo | |||
config | basis | title | タイトル | |
description | 概要 | |||
mail_from | メールアドレス | |||
plugin | プラグインID | 設定項目名 | プラグインの設定の値 | |
core | http_url | 設置URL | ||
https_url | 設置URL(SSL用) | |||
http_file | 設置URL+index.php | |||
https_file |
設置URL(SSL用)+index.php | |||
version |
ヴァージョン | |||
plugin | プラグインID | name | プラグイン名 | |
version | プラグインのヴァージョン |