番号 | ビル名称 |
---|---|
1 | あべのハルカス |
2 | 横浜ランドマークタワー |
3 | りんくうゲートタワービル |
4 | 大阪府咲洲庁舎 |
5 | ミッドタウン・タワー |
6 | ミッドランドスクエア |
7 | JRセントラルタワーズオフィス棟 |
8 | 東京都庁第一本庁舎 |
9 | NTTドコモ代々木ビル |
10 | サンシャイン60 |
目次
サンプル・プログラム(その1)
その1:配列の初期化
85: // 配列の初期化 ============================================================
86: $skyscrapers[1] = 'あべのハルカス';
87: $skyscrapers[2] = '横浜ランドマークタワー';
88: $skyscrapers[3] = 'りんくうゲートタワービル';
89: $skyscrapers[4] = '大阪府咲洲庁舎';
90: $skyscrapers[5] = 'ミッドタウン・タワー';
91: $skyscrapers[6] = 'ミッドランドスクエア';
92: $skyscrapers[7] = 'JRセントラルタワーズオフィス棟';
93: $skyscrapers[8] = '東京都庁第一本庁舎';
94: $skyscrapers[9] = 'NTTドコモ代々木ビル';
95: $skyscrapers[10] = 'サンシャイン60';
96:
その1:表の作成
125: /**
126: * HTML BODYを作成する
127: * @param array $arr 超高層ビル一覧(配列)
128: * @return string HTML BODY
129: */
130: function makeCommonBody1($arr) {
131: //一覧表作成
132: $table = '';
133: $n = count($arr); //配列の要素数
134: for ($i = 1; $i <= $n; $i++) {
135: $table .=<<< EOT
136: <tr>
137: <td style="text-align:center;">{$i}</td>
138: <td>{$arr[$i]}</td>
139: </tr>
140:
141: EOT;
142: }
143:
144: //BODY作成
145: $myself = MYSELF;
146: $refere = REFERENCE;
147: $title = TITLE;
148: $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
149: $width = WIDTH;
150: $debug = '';
151:
152: //デバッグ情報
153: if (! FLAG_RELEASE) {
154: $phpver = phpversion();
155: $debug =<<< EOT
156: <p>
157: <span style="font-weight:bold;">★デバックモードで動作中...</span><br />
158: PHPver : {$phpver}
159:
160: EOT;
161: }
162:
163: $body =<<< EOT
164: <body>
165: <h2>{$title} {$version}</h2>
166:
167: <table class="stripe_table">
168: <tr>
169: <th>番号</th>
170: <th>ビル名称</th>
171: </tr>
172: {$table}
173: </table>
174:
175: <div style="border-style:solid; border-width:1px; margin:20px 0px 0px 0px; padding:5px; width:{$width}px; font-size:small; overflow-wrap:break-word; word-break:break-all;">
176: 参考サイト<br />
177: <a href="{$refere}">{$refere}</a>
178: {$debug}
179: </div>
180: </body>
181:
182: EOT;
183: return $body;
184: }
サンプル・プログラム(その2)
その2:配列の初期化
85: // 配列の初期化 ============================================================
86: $skyscrapers[] = 'あべのハルカス';
87: $skyscrapers[] = '横浜ランドマークタワー';
88: $skyscrapers[] = 'りんくうゲートタワービル';
89: $skyscrapers[] = '大阪府咲洲庁舎';
90: $skyscrapers[] = 'ミッドタウン・タワー';
91: $skyscrapers[] = 'ミッドランドスクエア';
92: $skyscrapers[] = 'JRセントラルタワーズオフィス棟';
93: $skyscrapers[] = '東京都庁第一本庁舎';
94: $skyscrapers[] = 'NTTドコモ代々木ビル';
95: $skyscrapers[] = 'サンシャイン60';
96:
PHPは標準状態では、添字は0から始まり、+1ずつ増えるようになっている。
その2:表の作成
125: /**
126: * HTML BODYを作成する
127: * @param array $arr 超高層ビル一覧(配列)
128: * @return string HTML BODY
129: */
130: function makeCommonBody2($arr) {
131: //一覧表作成
132: $table = '';
133: foreach ($arr as $key=>$val) {
134: $table .=<<< EOT
135: <tr>
136: <td style="text-align:center;">{$key}</td>
137: <td>{$val}</td>
138: </tr>
139:
140: EOT;
141: }
142:
143: //BODY作成
144: $myself = MYSELF;
145: $refere = REFERENCE;
146: $title = TITLE;
147: $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
148: $width = WIDTH;
149: $debug = '';
150:
151: //デバッグ情報
152: if (! FLAG_RELEASE) {
153: $phpver = phpversion();
154: $debug =<<< EOT
155: <p>
156: <span style="font-weight:bold;">★デバックモードで動作中...</span><br />
157: PHPver : {$phpver}
158:
159: EOT;
160: }
161:
162: $body =<<< EOT
163: <body>
164: <h2>{$title} {$version}</h2>
165:
166: <table class="stripe_table">
167: <tr>
168: <th>番号</th>
169: <th>ビル名称</th>
170: </tr>
171: {$table}
172: </table>
173:
174: <div style="border-style:solid; border-width:1px; margin:20px 0px 0px 0px; padding:5px; width:{$width}px; font-size:small; overflow-wrap:break-word; word-break:break-all;">
175: 参考サイト<br />
176: <a href="{$refere}">{$refere}</a>
177: {$debug}
178: </div>
179: </body>
180:
181: EOT;
182: return $body;
183: }
サンプル・プログラム(その2)
その3:配列の初期化
85: // 配列の初期化 ============================================================
86: $skyscrapers = array(
87: 'あべのハルカス',
88: '横浜ランドマークタワー',
89: 'りんくうゲートタワービル',
90: '大阪府咲洲庁舎',
91: 'ミッドタウン・タワー',
92: 'ミッドランドスクエア',
93: 'JRセントラルタワーズオフィス棟',
94: '東京都庁第一本庁舎',
95: 'NTTドコモ代々木ビル',
96: 'サンシャイン60'
97: );
98:
サンプル・プログラム(その4):2次元配列
2次元配列とは
2次元配列は $skyscrapers[1][2] のように表現する。最初の添字が表の行番号に、2つめの添字が列番号に相当すると考えてもらえばよい。
初期化は、組み込み関数 array を二重に使う。
85: // 配列の初期化 ============================================================
86: $skyscrapers = array(
87: array('あべのハルカス', '300m', '60階'),
88: array('横浜ランドマークタワー', '295.8m', '70階'),
89: array('りんくうゲートタワービル', '256.1m', '56階'),
90: array('大阪府咲洲庁舎', '256.0m', '55階'),
91: array('ミッドタウン・タワー', '248.1m', '54階'),
92: array('ミッドランドスクエア', '246.9m', '47階'),
93: array('JRセントラルタワーズオフィス棟', '245.0m', '51階'),
94: array('東京都庁第一本庁舎', '242.9m', '48階'),
95: array('NTTドコモ代々木ビル', '239.9m', '27階'),
96: array('サンシャイン60', '239.7m', '60階')
97: );
98:
その4:表の作成
127: /**
128: * HTML BODYを作成する
129: * @param array $arr 超高層ビル一覧(2次元配列)
130: * @return string HTML BODY
131: */
132: function makeCommonBody4($arr) {
133: //一覧表作成
134: $table = '';
135: $n = count($arr); //配列の要素数
136: for ($i = 0; $i < $n; $i++) {
137: $table .=<<< EOT
138: <tr>
139: <td style="text-align:center;">{$i}</td>
140: <td>{$arr[$i][0]}</td>
141: <td>{$arr[$i][1]}</td>
142: <td>{$arr[$i][2]}</td>
143: </tr>
144:
145: EOT;
146: }
147: //BODY作成
148: $myself = MYSELF;
149: $refere = REFERENCE;
150: $title = TITLE;
151: $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
152: $width = WIDTH;
153: $debug = '';
154:
155: //デバッグ情報
156: if (! FLAG_RELEASE) {
157: $phpver = phpversion();
158: $debug =<<< EOT
159: <p>
160: <span style="font-weight:bold;">★デバックモードで動作中...</span><br />
161: PHPver : {$phpver}
162:
163: EOT;
164: }
165:
166: $body =<<< EOT
167: <body>
168: <h2>{$title} {$version}</h2>
169:
170: <table class="stripe_table">
171: <tr>
172: <th>番号</th>
173: <th>ビル名称</th>
174: <th>高さ(m)</th>
175: <th>階数</th>
176: </tr>
177: {$table}
178: </table>
179:
180: <div style="border-style:solid; border-width:1px; margin:20px 0px 0px 0px; padding:5px; width:{$width}px; font-size:small; overflow-wrap:break-word; word-break:break-all;">
181: 参考サイト<br />
182: <a href="{$refere}">{$refere}</a>
183: {$debug}
184: </div>
185: </body>
186:
187: EOT;
188: return $body;
189: }
サンプル・プログラム(その5):2次元配列
その5:表の作成
127: /**
128: * HTML BODYを作成する
129: * @param array $arr 超高層ビル一覧(2次元配列)
130: * @return string HTML BODY
131: */
132: function makeCommonBody5($arr) {
133: //一覧表作成
134: $table = '';
135: foreach ($arr as $key1=>$arr2) {
136: $table .= "<tr>\n<td style=\"text-align:center;\">{$key1}</td>\n";
137: foreach ($arr2 as $key2=>$val) {
138: $table .= "<td>{$val}</td>\n";
139: }
140: $table .= "</tr>\n";
141: }
142: //BODY作成
143: $myself = MYSELF;
144: $refere = REFERENCE;
145: $title = TITLE;
146: $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
147: $width = WIDTH;
148: $debug = '';
149:
150: //デバッグ情報
151: if (! FLAG_RELEASE) {
152: $phpver = phpversion();
153: $debug =<<< EOT
154: <p>
155: <span style="font-weight:bold;">★デバックモードで動作中...</span><br />
156: PHPver : {$phpver}
157:
158: EOT;
159: }
160:
161: $body =<<< EOT
162: <body>
163: <h2>{$title} {$version}</h2>
164:
165: <table class="stripe_table">
166: <tr>
167: <th>番号</th>
168: <th>ビル名称</th>
169: <th>高さ(m)</th>
170: <th>階数</th>
171: </tr>
172: {$table}
173: </table>
174:
175: <div style="border-style:solid; border-width:1px; margin:20px 0px 0px 0px; padding:5px; width:{$width}px; font-size:small; overflow-wrap:break-word; word-break:break-all;">
176: 参考サイト<br />
177: <a href="{$refere}">{$refere}</a>
178: {$debug}
179: </div>
180: </body>
181:
182: EOT;
183: return $body;
184: }
サンプル・プログラム(その6):連想配列
連想配列とは
連想配列は $skyscrapers['あべのハルカス'][0] のように表現する。
ここでは、行番号の代わりにビル名を使って初期化してみる。高さと階数は数値データにした。
85: // 配列の初期化 ============================================================
86: $skyscrapers = array(
87: 'あべのハルカス' => array(300, 60),
88: '横浜ランドマークタワー' => array(295.8, 70),
89: 'りんくうゲートタワービル' => array(256.1, 56),
90: '大阪府咲洲庁舎' => array(256.0, 55),
91: 'ミッドタウン・タワー' => array(248.1, 54),
92: 'ミッドランドスクエア' => array(246.9, 47),
93: 'JRセントラルタワーズオフィス棟' => array(245.0, 51),
94: '東京都庁第一本庁舎' => array(242.9, 48),
95: 'NTTドコモ代々木ビル' => array(239.9, 27),
96: 'サンシャイン60' => array(239.7, 60)
97: );
98:
その5:表の作成
127: /**
128: * HTML BODYを作成する
129: * @param array $arr 超高層ビル一覧(連想配列)
130: * @return string HTML BODY
131: */
132: function makeCommonBody6($arr) {
133: //一覧表作成
134: $table = '';
135: $i = 1;
136: foreach ($arr as $name=>$arr2) {
137: $table .=<<< EOD
138: <tr>
139: <td style="text-align:center;">{$i}</td>
140: <td>{$name}</td>
141:
142: EOD;
143: foreach ($arr2 as $val) {
144: $table .= "<td>{$val}</td>\n";
145: }
146: $table .= "</tr>\n";
147: $i++;
148: }
149: //BODY作成
150: $myself = MYSELF;
151: $refere = REFERENCE;
152: $title = TITLE;
153: $version = '<span style="font-size:small;">' . date('Y/m/d版', filemtime(__FILE__)) . '</span>';
154: $width = WIDTH;
155: $debug = '';
156:
157: //デバッグ情報
158: if (! FLAG_RELEASE) {
159: $phpver = phpversion();
160: $debug =<<< EOT
161: <p>
162: <span style="font-weight:bold;">★デバックモードで動作中...</span><br />
163: PHPver : {$phpver}
164:
165: EOT;
166: }
167:
168: $body =<<< EOT
169: <body>
170: <h2>{$title} {$version}</h2>
171:
172: <table class="stripe_table">
173: <tr>
174: <th>番号</th>
175: <th>ビル名称</th>
176: <th>高さ(m)</th>
177: <th>階数</th>
178: </tr>
179: {$table}
180: </table>
181:
182: <div style="border-style:solid; border-width:1px; margin:20px 0px 0px 0px; padding:5px; width:{$width}px; font-size:small; overflow-wrap:break-word; word-break:break-all;">
183: 参考サイト<br />
184: <a href="{$refere}">{$refere}</a>
185: {$debug}
186: </div>
187: </body>
188:
189: EOT;
190: return $body;
191: }
サンプル・プログラム(その7):外部ファイルからデータ読み込み
外部ファイルからデータ読み込み
ここでは、外部テキストファイル "arr07.txt" にデータを配置する。
1行目には列名を、2行目には表示時の単位名、3行目には文字列の寄せ方を記述する。4行目以降がデータの実体である。
116: /**
117: * 配列にデータを読み込む
118: * @param string $fname 配列データファイル
119: * @param array $items 超高層ビル一覧を格納する配列
120: * @param array $units 単位を格納する配列
121: * @param array $aligns 文字寄せを格納する配列
122: * @return array 読み込んだ配列
123: */
124: function readArray($fname, &$items, &$units, &$aligns) {
125: $infp = fopen($fname, 'r');
126: if ($infp == FALSE) return FALSE;
127:
128: $columns = fgetcsv($infp, 1000, "\t"); //列名
129: $n = count($columns);
130: $arr1 = fgetcsv($infp, 1000, "\t"); //単位
131: $arr2 = fgetcsv($infp, 1000, "\t"); //寄せ方
132: for ($i = 1; $i < $n; $i++) {
133: $units[$columns[$i]] = $arr1[$i];
134: $aligns[$columns[$i]] = $arr2[$i];
135: }
136:
137: while (! feof($infp)) {
138: $arr = fgetcsv($infp, 1000, "\t");
139: if ($arr == NULL) break;
140: $n = count($arr);
141: for ($i = 1; $i < $n; $i++) {
142: $items[$arr[0]][$columns[$i]] = $arr[$i];
143: }
144: }
145: fclose($infp);
146:
147: return $items;
148: }
ソート
連想配列の添字を保持したまま、ユーザー定義の比較関数で配列をソートする組み込み関数 uasort を利用する。
231: uasort($items, function($a, $b) {
232: return ($b['高さ'] - $a['高さ']);
233: });
234:
参考サイト
- 配列:PHP公式
- 配列の繰り返し処理 foreach:ほぼ日刊 PHP
- 複雑な(連想)配列の上書き結合(マージ):チーズくんの備忘録
- (PHP)連想配列の特定のキーがあるかどうかを確認:3流プログラマのメモ書き
- PHPで連想配列のキーと値を全て出力する:ITblog