• 虹色ミツバチ
  • freoカスタマイズメモ、テンプレート・プラグイン配布/officeTIPS
検索プラグイン

> Entry >freo>freo講座>初心者の為のfreoテンプレート編集講座> 【基本編(09)】多次元配列について

【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行目には、

<link rel="stylesheet" href="{$freo.core.http_url}{$smarty.const.FREO_CSS_DIR}common.css" type="text/css" media="all" />

と書いてあります。
この、{$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 プラグインのヴァージョン

ページ移動

関連記事

ユーティリティ

Twitter

記事検索

ページ上部へ