自分が勉強したことや気になることなど、99%自分用です。コードを書いてるのでPCから閲覧を推奨。この広告は、90日以上更新していないブログに表示しています。HTMLなんだかんだでPHPの勉強をちゃんとしようと決めて行動を始めてから1か月くらいになります。第6章-01今回から配列を用いたデータ管理について学んでいく。下のコードの動作確認。配列として初期化$array='りんご';$array='みかん';$array='ばなな';var_dump($array);$array=array()と書くことにより、$arrayは配列として認識される。この配列からとk帝のデータのみを取り出す場合、以下のように配列の添え字を指定すればよい。$array[2];こうすることで、画面に「ばなな」と表示される。[0][1][2]などと数字のついた箇所をキーという。キーは添え字(自動的に降られる数字)以外にもこちらで名づけることもできる。配列として初期化$array['name']='鈴木';$array['hobby']='テニス';$array['mail']='sample@sample.com';var_dump($array);上のコードについて、以下のように書き換えればこちらで指定したキーを用いて指定することもできる。//キーがhobbyのデータのみを出力また、配列の書き方は他にも存在する。複数のデータを一度に格納する場合、以下のように書くとよい。配列として初期化$array=array('name'=>'鈴木','hobby'=>'テニス','mail'=>'sample@sample')こうすることで複数のデータを一度に配列に格納することができる。自身でキー名を名づけた配列を「連想配列」と呼ぶ。上のコードで使っている「=>」はダブルアロー演算子といい、連想配列を作るときに使われる。第6章-02配列の要素数に応じて繰り返し処理を行うforeach()について学ぶ。$key.':'.$var.'<br>';}foreach()は配列の要素数に応じて繰り返し処理を行う。【配列】as【キー名】=>【データを格納する変数】)という構成になる。このとき、$keyにはキー名、$varには中身のデータが代入される。$item)というように自由に変数名を指定することができる。foreach()においてキー名は省略して書くことができる。キー名はプログラマが中身を把握するための名前であり、そのまま出力することは多くない。下記のコードに加筆して以下の課題を解け。<?php$array=array('name'=>'佐藤','age'=>'27','blood'=>'AB'}キー「age」の中身だけを指定して出力せよ。foreach()を使用して配列の中身をすべて出力せよ。$var.'<br>';}第6章-03二次元配列について学ぶ。「配列の中に配列を入れる」というイメージであり、これを使ってデータベースから取得したデータと同じような状態になると言える。$arrays[1]['name'];と後ろに書けばよい。「$arraysという大きな箱の中に$arrayという小さな箱があり、その小さな箱の中にそれぞれname、hobby、mailがあるイメージ」とのこと。HTMLの中で配列を出力していこう。先ほどまでのコードの後ろにHTMLを書いていく。border="1"><tr><th>名前</th><th>趣味</th><th>メールアドレス</th></tr><tr><td>鈴木</td><td>テニス</td><td>sample@sample.com</td></tr></table></body></html>これで、タグ内が既に記述されている静的なページができる。現在「鈴木」や「テニス」が記述されている箇所を削除し、以下のように書き換え。?></table>二次元配列$arraysには配列が格納されており、これを$rowと名付けて取り出している。echoで表示するときにはさらに連想配列のキー名を指定する必要があるので、$row配列のキーnameをechoで表示したいときは$row['name']と記述している。ちなみに、デザイン的な観点ではHTMLタグはechoで出力しない方がよいと言われているらしい。今回はチェックボックスの値を取得し、送信ボタンで次のページに進んだら選択したものが表示されるという仕組みを作る。送信ページ(チェックボックスで選択するページ)を作る配列としてデータを取得するforeachを使って受け取り側のページで表示するという風になる。要件定義としては、checkboxを使って好きな色を選択し、送信できるようにする取得後のデータはリスト表示する出力時はセキュリティを意識してエスケープ処理を行うとなる。送信ページを作成する。type="submit"></form></body></html><input>タグにname="color"と入っていることを確認する。[]はこれから送るデータが配列であることを示すため、書き忘れるとデータが1つしか送信できない。複数のデータを送信する際には必須となる。合わせて、受信ページとなるcheckbox_receive.phpも作成。charset="utf-8"></head><body><h1>受信ページ</h1><h3>好きな色</h3></body></html>この状態でデータを受信し、var_dumpで表示する(「チェックボックスの値を~」の部分を「var_dump($_POST['colors'];)」と書き換え)。自動的に添え字がつく形の配列として取得していることが分かる。個別にデータを取り出す場合は「$colors[0]」「$colors[2]」という風に記述する。これをリスト表示していく。?></body></html>リストとして表示することができた。今回は「セキュリティを意識してエスケープ処理をする」という条件があるのでその部分について学んでいく。フォームからの入力内容は、基本的にすべての出力時に特殊文字の変換を行っていなければならず、それはチェックボックスの際も例外ではない。チェックボックスの値はクライアント側で変更することができてしまうため、悪意のあるプログラムを送信して実行することが可能である。そこで、出力前に<>などの特殊文字やプログラムで使われるシングルクォーテーションなどのプログラム的な効果を無くしてしまう必要がある。そこで使われるのがhtmlspecialchar()というコードである。checkbox_receive.phpのecho部分を以下のように書き換え。?>htmlspecialcharsの第一引数には変換する文字列を指定する。第二引数には「ENT_QUOTES」を指定するのが一般的で、これによりシングルクォーテーションやダブルクォーテーションのどちらも変換することができる。第三引数には出力時の文字コードである「UTF-8」を指定。クライアントから受信したデータを出力する場合には必ずhtmlspecialchars()の処理を加えるようにしよう。checkbox_receive.phpにもう少し処理を加え、このようになる。</p></body></html>ちなみにimplodeという関数は、配列要素を文字列によって連結する働きを持つ。公式ドキュメントの内容は以下の通り。Manualこれにより、checkbox_receive.phpはデータを受け取るとこのようになる。これにて実習終了!!残念ながら今回は一工夫加える箇所が思い浮かばないので、何も手を加えません。明日は楽しみにしている映画の公開日なのでわくわくしながら寝ます。23:16PHP実習:配列とforeach、二次元配列Tweet広告を非表示にする関連記事2018-06-28PHP実習:PHPで画像データ送信ブログの記事タイトルもこんな風にしていきます。googleサイト...2018-06-27PHP実習:POSTとGET今日も続きをやっていきます。昨日の続きをやっていきます。昨日の最後のPHPについ...2018-06-24PHP実習:MySQL環境作成1昨日サボってしまった...。(1)月別アーカイブ検索はてなブログをはじめよう!R_de_aruさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。