カテゴリー
PHP

フォームからの情報を受け取ろう

この章ではフォームについて説明します。
会員登録で名前、住所などを入力したことがあると思いますが、これがフォームです。
フォーム自体はHTMLで作るのですが、その入力した内容をサーバーに送るにはPHPを使います。
以下のプログラムはHTMLで作成しています。
ファイル名は1です。1111111 このHTMLファイルを画面に表示させると以下のようになります。
ここから「名前」「メールアドレス」などの情報を送信して、PHPプログラムで処理するというプログラムを作成します。1 HTMLの説明は後ほどしますが、ここでは送信方式について説明します。1 =>action属性の値にはデータの送り先を指定します。
この例で説明しますと1から1にデータを送ることを意味します。
method属性にはサーバへの送信方法を指定します。
フォームからサーバへの送信方法にはPOSTとGETの2つがあります。POSTを指定した場合、フォームに入力したデータはHTTPプロトコル(後ほど補足で説明します)という通信の機能によりリクエストボディつまり本体部分に入力されてサーバに送られますが、送る文字数には制限はありません。
POSTの場合は入力したデータの他にもWebブラウザの種類やバージョンなどの情報、どの言語を使っているか、どのサイトから訪問してきたかなどの情報も一緒に送信します。
GETはURLの後ろに1を付けて送ります。
複数の情報を付加する場合には1を使います。
つまり1が1つの情報になりますので、複数の情報を付け加えたい場合は1で連結します。
例えば1のように連結します。
つまり、フォームの送信データがURLとして渡されると言うことです。
そのため送信する情報には制限が有り、最大で約2000文字位です。
例を示すとヤフーなどで検索していると1のように1の後ろに1が連なっているURLを見たことがあると思いますが、これはGETでサーバにデータを送っているのです。
そして、サーバはその検索語を元に検索結果を返しています。
get方式でデータを送るときにはmethodの値をgetに変更します。1 補足ですがHTTPプロトコルについて説明します。
HTTPプロトコルとはユーザーのコンピューターとサーバの間のやり取りに関する通信規約であり、ユーザーのブラウザからリクエストを発信し、その結果をサーバがレスポンスするとその処理が完結すると言う単純な構造から出来ています。1 属性にtextを入れると1行のテキスト入力欄を作成します。
size属性はテキストボックスの横幅で、valueは入力欄の初期値です。
1と入力すれば最初から入力欄に「猫」が入力された状態になります。name 属性はtextに名前を付けるためにあります。
11 これは1行のテキスト入力欄です。
name 属性はtextに名前を付けるためにあります。11 rowsは入力欄の行数を入力し、この例では5行分になります。
colsは1行に入力できる文字数です。11 type属性にradioを入れるとラジオボタンを作ることが出来ます。
name属性はradioに名前を付けるためにあります。11 <select>はセレクトボックスを作成します。
name属性はセレクトボックスに名前を付けるためにあります。11 type属性にcheckboxを入れますとチェックボックスを作ることが出来ます。
name属性はチェックボックスに名前を付けるためにあります。1 1属性に「submit」を入れると送信ボタンを作ることが出来ます。
value属性にはsubmitボタンに付ける名前を書きます。1
次は送信先のPHPの部分について説明します。
以下のファイルは1です。1111111Lesson21.phpにLesson21.htmlの中のフォームデータを送る方法について説明します。
ユーザーが送信ボタンを押すとmthodに指定した方式で送信されます。
post方式は大量のデータを送るときに便利です。
1を使うことで、POSTメソッドで送信されたHTMLのデータを取得できます。
1については後ほど説明します。
例えばpost方式で送信した以下のフォームのメールアドレスのデータを得たいのであればname属性の値をキーとして1と、記述してデータを受け取ります。1 GRTで送信された場合には1で受け取ります。
getの場合はフォームのmethodの部分を以下の通りgetと書きます。1 そして$_GET変数を使うことで、GETメソッドで送信されたフォームのデータを取得できます。
では具体的に11について説明します。
フォームから送信されたデータを受け取るには送信方法がPOSTであれば1GETであればで1で受け取ります。
まずはPOSTから説明します。
1を押しますとデータが送信されますが、そのデータを受け取るには以下の構文で受け取ります。1 この構文を見ていただくと分かりますが1は連想配列です。
フォームで入力された氏名を受け取りたいのであれば
1と記述してデータを受け取ります。

name属性の値を連想配列のキーに入れます。1 フォームのメールアドレスを受け取りたいのであれば1と記述してデータを受け取ります。
では実際、PHP側でどのようにデータを受け取っているかを見てみましょう。11にはフォームの名前欄に入力された情報が連想配列の形で代入されます。
例えば1 と、名前を入力して1 を押しますと1には「近藤雅夫」と言うデータが代入されます。
つまり1と、同じことを意味します。

ですので、
結果は1が表示されます。
「htmlspecial」はユーザー定義関数ですが、これについては後ほど説明します。

次にempty関数について説明します。
通常、フォームからデータを送った時、そのデータが間違っていないのかをチェックする必要があります。
例えば名前が入力しているかどうかをチェックして、入力していないのならば入力するようにメッセージを表示することが必要になります。
会員登録で名前の入力が間違っていて、もう1度入力するようにメッセージを表示された経験が1度はあると思います。
empty関数は引数に値が入っているかどうかを確認する関数であり、〇数字の0
〇文字列の1 〇何も入ってないカラ文字、
〇null
の場合はTRUEで、それ以外はFALSEを返します。
nullとは何も変数に入ってない状態をさします。
ですので1に仮に何もデータが入っていないのならばelse以下の1が出力されます。

似たような関数としてisset関数があります。
この関数は変数がセットされているのかを調べる関数です。
変数 が NULL 以外であれば TRUE、そうでなければ FALSE を返します。
以下のようにissetは値がカラでもTRUEを返すので、送信データがカラでもそのまま警告もなく進んでしまいます。1 結果は以下の通りです。
「値が入っている」
カラではなくで本当に値が入っているか確認するにはempty関数かstrlen関数を使いましょう。
strlen関数については説明しましたが、もう一度復習しましょう。1 strlen関数は文字列の長さを測る関数です。
引数に文字列を設定すると長さを返してくれます。
長さとはバイト数のことです。
半角英数字は1文字1バイトとして数えています。
おおよそ日本語のようなマルチバイト文字は1文字2バイトですが、文字コードがUTF-8では概ね3文字バイトで表されます。1 結果は以下の通りです。
21バイト
13バイト
ではstrlenをif文で使ってみましょう。111
結果は以下の通りです。
値が入っている
値が入ってない
値が入っている
strlenをこのように使うことによってissetと違ってカラ文字には値が入っていないことを確認できます。
これでフォームの名前や住所などがカラの場合にはメッセージを表示させることができます。

ここで補足としてis_numeric関数について説明します。1 この関数は変数が数値であるかどうかを調べることが出来ます。
変数が数値、または数値文字列ならばTRUEを、そうでなければFALSEを返します。
数値文字列とは造語ですが、例えば1のように数値をダブルクォートやシングルクォートで囲んでも数値とみなされます。
このis_numeric関数はフォームの入力値を数字に設定しているのに文字を送ってきてしまう場合にチェックすることが出来ます。11
結果は以下の通りです。
数字です
数字以外が入っています
数字です
次はチェックボックスのデータをPHP側に渡す方法について説明します。1 チェックボックスでは複数の箇所に印を付けることが出来ますが、印をつけた部分をすべてPHPプログラムに送りたい場合はどうするかと言いますと、1のようにname属性の値の部分に1を付けてください。
これを付けることにより、配列としてPHP側にデータを渡すことができます。
1にはチェックボックスでチェックしたデータが配列の形式で入っていますのでforeachですべてを取り出すことが出来ます。1 次に以下のユーザー定義関数についての説明をします。1 これはhtmlspecialと言うユーザー定義関数ですが、この関数を説明するより先にhtmlspecialchars関数について説明します。
htmlspecialhars関数はフォームから入力した文字や数値を画面に表示するときには必ずhtmlspecialchars関数を使います。
これは外部からの悪質なサイトへの攻撃を防ぐことに有益な関数です。1 htmlspecialchars関数の機能は指定した文字列を変換スタイル、文字コードに従ってHTMLでの特別な意味を持った文字を表示可能な形式に変えます。
具体的には
〇 ‘&’ (アンパサンド) は1に変換されます。

〇「変換スタイル」に1が設定されている場合、ダブルクォートは1になり、シングルクォートは1になります。

〇 ‘<‘ (小なり) は1に変換されます。

〇 ‘>’ (大なり) は1に変換されます。
「変換スタイル」はデフォルトでは1が設定されています。
1はダブルクォートは変換されますが、シングルクォートは変換されません。
1はシングルクォートも1に変換してくれますので、変換スタイルは1に設定してください。
構文の「文字コード 」は変換をどの文字コードで行うかを指定します。

この例では1を使用しています。
では説明をしていきます。
ユーザーが入力したデータが1に入っていますので、このデータをhtmlspecial 関数を呼び出して、htmlspecialchars関数で処理しています。1 では次にユーザー定義関数の中身について説明します。
このユーザー定義関数はよく使う関数なので覚えておいてください。1 is_array関数は引数が配列の場合にTRUE、配列ではない時にFALSEになる関数です。
引数が配列ではない時に1 が実行されますので、1
1などはここで処理されます。
問題は引数が配列の時です。
配列の場合は1が実行されますが、1は指定した配列の要素のすべてを指定した関数に渡すという機能を持った関数です。1 array_map関数は渡されてきたデータが配列の場合に配列の要素を1つずつhtmlspecial関数の引数$strに渡すので、その要素は最終的には以下の箇所で処理されます。 1 図式にすると以下の順番で進みます。  
以下の過程を配列の数だけ繰り返します。1POST方式でのデータの送信方法については説明したので、今度はGET方式でデータを送ってみましょう。
以下のファイル名は1です。111

Lesson21.htmlから以下の1にGET方式で送ります。11111 GETで送信された場合はURLの1番後ろに1を付けて送ります。
複数ある場合は111で連結できます。
しかし、文字数に制限があり(2000文字くらい)、少ないデータを送るのに適しています。
以下の形式でGETのデータを受け取ります。1 例えば次の箇所でGETのデータを受け取っています。1 データを1から1にGETで送ると以下のようにURLに埋め込んで送ってくれます。
つまり、name 属性の値と入力された値が1で連結されます。
渡すデータが複数ある場合には各データを1で連結します。
例えば以下のように送信されます。1 上のURLの中に1のような箇所がありますが、これはブラウザがURLエンコードを行ってくれているからです。
日本語などはURLとして認められていないので、通常はそのままでは送ることはできませんが、URLエンコードを行うとURLとして認められている文字に変換して送ってくれます。
このエンコードの作業はフォームから送る場合には自動で変換してくれます。
では例を見てみましょう。
フォームで送る場合には勝手にブラウザがURLエンコードを行ってくれるのですが、リンクに埋め込んでデータを送る場合には自身でURLエンコード処理を行わなくてはいけません。
下のファイル名は1です。11 Lesson27.phpから下の1にデータを送ります。11
Lesson27.phpの中に1と言う箇所がありますが、urlencode関数は日本語などURLとして認められていない文字を規定に則って変換して送ってくれます。
urlencode関数を記述しませんと文字化けしますので気を付けてください。
$_GETのキーには以下の「name2」を入れます。1 以下のリンクをクリックしますと「近藤」と出力されます。1

カテゴリー
PHP

ユーザー定義関数内の変数の影響範囲を知ろう

この章では変数の影響範囲について説明します。
ユーザー定義関数内で作成した変数はローカル変数と呼ばれ、その関数内でしか使用することはできません。11
また、関数外の変数(関数外の変数をグローバル変数と言います)も関数内で使用することが出来ません。
以下のように使用しますとエラーになります。11 どうしても、グローバル変数を関数内で使用したい場合には関数内の変数に「global」を付けてください。11 もう1つ、グローバル変数をローカル変数内で使用する方法があります。
それはスーパーグローバル変数と呼ばれる$GLOBALを使います。
$GLOBALはグローバル変数をプログラムのどこでも使えるようにする連想配列ですが、グローバル変数の変数名がキーになります。
$garlicを関数内で使いたい場合には1と、記述します。
このように書くことにより$garlicの値である290を使うことが出来ます。1 では例をみてみましょう。11

カテゴリー
PHP

参照渡しと値渡しについて知ろう

この章では参照渡しと値渡しについて説明します。
PHPには変数に値を渡す方法が2種類あります。
1つが値渡しで、もう一つが参照渡しです。
値渡しとは今までと同じ代入の仕方ですが、ある変数に代入したデータを他の変数へ代入することを意味します。
ただデータを移しているだけなので、当たり前ですが$aも$bも違う変数になります。
$bには$aの値が代入されているのでリンゴが出力されます。
1
以下のようにユーザー定義関数に変数の値を渡しましたが、これも値渡しになります。
11参照渡しは値を渡すときに変数の前に1を付けます。1 「&」を付けて変数を代入しますと代入する変数と代入される変数の両方が同じものを指すようになります。
つまり、$aに1を付けて$bに代入しますと2つの変数は一心同体になりますので、$bにトマトを代入すると$aまでトマトに書き替わります。
専門的に言いますとデータが保存してあるアドレスが同じになるということです。
アドレスとはデータが保管してある場所です。
この参照渡しは関数でも使うことが出来ます。
仮引数に1を付けますと参照渡しになります。
この関数の中の$n1は1を掛けた結果、1050に変わっています。
この戻り値が$resultに入りますので1は1050になります。
1
ではecho $a;はどうでしょうか?
参照渡しでデータを渡した結果、$aと$n1は同じものを指すようになりましたので、$aも1050になります。

カテゴリー
PHP

関数の仮引数に配列を渡そう

この章では関数の仮引数に配列を渡す方法について説明します。
ユーザー定義関数の仮引数には配列も渡すことが出来ます。
配列(array(3,8,4,8))を仮引数の$numberに代入して、その配列の個々の要素をforeachで取り出して合計を算出しています。1 結果は以下の通りです。
「合計は23です」
次の例は呼び出し元に配列を返す例を紹介します。1 この例は戻り値が配列になっていまして、$resultに戻り値を代入しています。
そして、配列$resultの要素をforeachですべて取り出しています。
これにより足し算と引き算の結果を同時に呼び出し元に返すことが出来ます。
結果は以下の通りです。
15 
9

カテゴリー
PHP

ユーザー定義関数について知ろう

この章ではユーザー定義関数について説明します。
関数とは入力したデータに基づいて決められた処理を行い、戻り値を返す機能を持っていますと説明しました。
これまで説明した関数はPHPによって始めから用意されている関数です。
例えば1は配列の1番上に要素を追加する関数ですが、初めからPHPの内部機構でそのような働きを作ってくれています。
ユーザー定義関数では自身で好きなように、ある働きを持った関数を作ることができます。例えば消費税を自動で計算する関数を自分で作りたいとします。
その場合、商品の代金を関数に渡すと関数は商品金額に消費税額を掛けた処理をして、その結果を返すという機能を持った関数を作ります。
商品金額に消費税額を掛けた処理を関数として自身で作成するということです。関数の基本構文は以下の通りです。
この構文の中の引数とは関数内で使われるデータの事です。
この引数の箇所にデータを入れて関数を処理していきます。1 関数名の付け方は変数名の付け方と基本的には同じですが、変数と違って関数は大文字と小文字は区別しません。
例えばdepositと言う関数とDepositと言う関数は同じ関数を意味します。
関数の中の引数は左端から第1引数、第2引数と、使う分だけ設定します。
では関数の説明をしていきます。
関数を使わないで国語、算数、英語の平均を求めるプログラムを書きますと、以下のように書くことが出来ます。1 これを関数で書き換えますと以下のようになります。1 実はAverage関数はこのままでは何も動きません。
この関数を使用するためには関数を呼び出す必要があります。
呼び出すことによって初めて関数が実行されます。
関数の呼び出しの基本構文は以下の通りです。
この関数の呼び出しで引数のデータを関数に渡します。1
関数の呼び出し場所は以下のように関数の前でも後でも問題ありません。1 もしくは1
ではこのプログラムを順を追って詳しく見てみましょう。
1で関数を呼び出します。
引数である変数にはそれぞれ56、45、99が代入されています。

〇関数を呼び出した後は$kokugonの値が$eに、$sansuuの値が$fに、$eigoの値が$gに代入されます。
実引数と仮引数の変数名が同じでなくても問題ありません。
つまり$kokugoと$e, $sansuuと$f, $eigoと$gが同じ変数名である必要はありません。

〇仮引数$e,$f,$gの部分にそれぞれ値が代入されましたが、仮引数$eはfunction内部の$eの部分に、仮引数$fはfunction内部の$fの部分に、仮引数$gはfunction内部の$gの部分に代入され計算が実行されます。

〇 function内部の処理が終わったら、呼び出し部分の1に戻ります。
これで関数の実行は終わりです。
結果は以下の通りです。1 では次の例をみてみましょう。11 結果は以下の通りです。
会計は1333.5です
会計は1333.5です
会計は1333.5です
この例では3回関数を呼び出していますが、関数はこのように何回呼び出しても問題ありません。
次に仮引数にデフォルト引数を設定する方法について説明します。
デフォルト引数とはあらかじめ仮引数に設定する値です。
以下がデフォルト引数を使った例です。11
仮引数内に1と書いてありますが、これがデフォルト引数です。
デフォルト引数を1つ記述しましたので、実引数は1のように1つ減らして2つでOKです。
デフォルト引数を設定する上で注意してほしいことはデフォルト引数は右端から設定していくことです。
ですので、以下の例のように左端だけ指定、他にも真ん中だけ指定、左端と真ん中だけ指定もダメです(紙面の都合でfunctionとshoppingを違う段に書いていますが通常は横一列で書いてください)11 もう一例みてみましょう。
デフォルト引数を複数設定する場合には右端から指定します。
この例では真ん中と右端の仮引数を設定しています。
またデフォルト引数を2つ設定したので、呼び出し側の実引数は1つになっています。

11
次は戻り値のある関数についての説明をします。
戻り値とは呼び出し元に返す値のことです。
関数の説明をする時に戻り値については以下のように説明しました。
関数とは入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。1 上の図を参考にしていただくと分かりますが、呼び出し元に値を返すにはreturnを使います。
そして、呼び出し元に戻った戻り値は変数や配列に代入されて、printなどで出力されることになります。
では例をみてみましょう。1 「return $i;」の$iには1と言う値が入っていますので、この値をreturnで呼び出し元に返します。
そして、その戻り値は$qwに代入され、最終的には1で出力されます。1

カテゴリー
PHP

数値に関する関数を知ろう

この章では数値に関する関数について説明します。
1round関数は第1引数で指定された値を第2引数で指定された桁数で丸めます(ほとんど四捨五入と同じですが、少しの誤差があります)。
丸める桁数を省略した場合は小数点以下を丸めます。
では例をみてみましょう。1 「丸める桁数」は
「2」が小数点第2位を四捨五入
「1」が小数点第1位を四捨五入
「-2」が10の位を四捨五入
「-1」が1の位を四捨五入
です。
結果は以下の通りです。 1 1ceil関数は指定された値を切り上げる関数です(小数点以下を切り上げて整数を取り出します)。元の数字よりも大きい数を戻り値として返します。
では例をみてみましょう。1 結果は以下の通りです。 
124と-123
1floor関数は指定された値を小数点以下で切り捨てる関数 (端数を切り捨てる)です。
元の数字よりも小さい数を返り値として返します。
では例をみてみましょう。1 結果は以下の通りです。
123と-124
1number_format関数は数字を1000の位ごとにカンマで区切った文字列を戻り値として返します。
小数点以下は四捨五入されます。
小数点以下の桁数、小数点を表す区切り文字、1000の位毎の区切り文字は省略できます。
では例をみてみましょう。1 $hは数値が丸められていますが、 小数点以下の桁数を指定していないため、小数点以下は表示されません。
結果は1です。
次の例をみてみましょう。1 2つ目の引数で小数点以下第何位まで表示するかを設定します。
この例の場合は2を指定しているので小数点第2位を四捨五入します。
結果は1です
次の例をみてみましょう。1 小数点を表す区切り文字に11000の位毎の区切り文字に1を指定しています。
つまり、「12,345.24」の1の部分が1に、1の部分が1に変更されます。
1のように引数が3つだけの指定はできませんので注意してください。
結果は以下の通りです。1 1mt_rand関数は乱数を生成します。
では例をみてみましょう。1 結果は
1974746906 
1494960676
など、毎回違う数字が表示されます。
返される値の最小値、返される値の最大値を指定しない場合には0以上の適当な値を返します。
次の例をみてみましょう。1 1から800までの数字がロードするごとに変わります。
指定の範囲内で値を取得したい場合は最小値と最大値を指定します。

カテゴリー
PHP

文字列に関する関数を知ろう

この章では文字列に関する関数について説明します。
配列の関数に続いて今度は文字列に関する関数について説明します。1str_replace関数は元の文字列に関して、置換対象の文字列を置換後の文字列で置き換えます。
では例をみてみましょう。1 元の文字列のカレーを牛丼に置換しています。
結果は1です。
今度は元の文字列に配列を使った例を説明します。1 配列の中のaをzに置換しています。
結果は以下の通りです。
z
b
c
1mb_substr関数は文字列の一部分を取り出す関数です。
では例をみてみましょう。
1「取り出し開始位置」は前から1と数えますので、1番前から3個取り出して$kazu2に代入しています。
結果は 「123」 です。
次の例をみてみましょう。1 取り出す文字数を省略すると取り出し開始位置からすべての文字列を取り出します。
取り出す文字数、文字コードは省略できます。
結果は 「5678」 です。
1str_repeat関数は文字列を指定した回数だけ繰り返す関数です。
では例をみてみましょう。1 繰り返す文字列にaを, 繰り返す回数に5を指定しているので、結果は1になります。
1explode関数は対象の文字列を区切り文字で区切った文字列を配列として返します。
では例をみてみましょう。1 対象文字列$strを1で分割したものを配列$arrに入れています。
配列なのでforeachで取り出すことが出来ます。
区切り文字は文字列であれば1でも1でも何でも使うことが出来ます。
結果は「abcde」です。
1implode関数は配列要素を区切り文字列により連結する関数です。
1各配列の要素を1でつなげているので、結果は1です。
1strlen関数は文字列の長さを測る関数です。
長さとはバイト数のことです。
半角英数字は1文字1バイトとして数えています。
おおよそ日本語のようなマルチバイト文字は1文字2バイトですが、文字コードがUTF-8では概ね3バイトで表されます。
つまり、バイト数は、文字コードに依存するので複雑です。
そのような理由から、日本語の文字数を数えたい場合は次に説明します1を使いましょう。
1結果は以下の通りです。
21バイト
13バイト
1mb_strlen関数は日本語などのマルチバイト文字列の文字数を数える関数です。
strlen関数はバイト数を習得する関数です。
文字エンコーディングは省略できます。
文字エンコーディングとはどの文字コードでこの関数を実行するのかを指定します。
では例をみてみましょう。1 結果は「10個」 です。
1mb_convert_kana関数は全角英数字を半角に変えたり、半角英数字を全角に変えたり、かな文字を全角カナや半角カナに変換することができます。
エンコーディングは省略できます。111 では例をみてみましょう。1 半角英数字を全角に変換しますので変換オプションはAを使います。
結果は以下の通りです。 
「akasaka123」
次の例をみてみましょう。
1では説明を始めます。
1はフェラーリという全角カタカナを半角カタカナに変換してますので、結果は1です。
1はランボルギーニという全角カタカナを全角ひらがなに変換してますので、結果は1です。
1はふらのという全角ひらがなを半角カタカナに変換してますので、結果は1です。

カテゴリー
PHP

配列に関しての関数について知ろう

この章では配列に関しての関数について説明します。
関数とは入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。
配列に関しての関数とは配列の順番を変えたりする関数のことです。
では関数の基本について説明します。1 PHPの関数の仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
引数とは関数内で使われるデータの事で、上の説明で言えば3,5,7の事です。
PHPには初めからこのように機能が定義されている関数が多数ありますので、この章では配列に関係する関数を取り上げたいと思います。1 unshift関数は配列の1番上に要素を追加する関数です。1 先頭に鹿を追加したので、1では鹿が出力されます。

1 array_push関数は配列の1番下に要素を追加する関数です。11と同じことは1と書いても実現できます。
1番下に猿を追加したので、1では猿が出力されます。
1array_shift関数は配列の1番上から要素を削除します。1 先頭から猫を削除したので、1では犬が出力されます。
1array_pop関数は配列の1番下から要素を削除する関数です。
1末尾からネズミを削除します。
1sort関数は配列の値を昇順つまり小さい値から大きい値に並び変える関数です。1 sortを行ってからforeachで取り出します。
この例では数値をソートしています。
結果は 「1259」 です。
次の例をみてみましょう。1 sortを行ってからforeachで取り出します。
この例では文字列をソートしています。
結果は 「bgt」 です。
次の例をみてみましょう。1 =>連想配列をsortすると、添え字が0から数値で振り直されてしまうので注意が必要です。
つまり1が数値に変わってしまうということです。1 配列のキーと値との関係を維持しつつ、配列をソートしたい場合は後ほど説明するasort関数とarsort関数を使います。1 rsort関数は配列の値を降順つまり大きい値から小さい値に並び変える関数です。1 rsortを行ってからforeachで取り出します。
この例では数値をソートしています。
結果は「9521」 です。1 rsortを行ってからforeachで取り出します。
この例では文字列をソートしています。
結果は「tgb」 です。1 asort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象は値であり、昇順に並び変えます。1 11arsort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象は値であり、降順に並び変えます。11 1ksort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象はキーであり、昇順に並び変えます。
111krsort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象はキーであり、降順に並び変えます。1 11array_slice関数は配列の指定した位置から要素を取得する関数です。
基本構文の中の11は省略可能です。
TRUEを指定すると例え配列から要素を取り出してもキーと値の関係は崩れません。
[取り出す数]を指定しない場合は指定した位置から最後まで指定したことと同じことを意味します。
では例をみてみましょう。1 この例では2つ目の要素である栄治から栄太までを切り取り、配列$name2に代入しています。
取り出し位置は0から数えているので、1の場合は2つ目の要素である栄治からになります。
結果は以下の通りです。
0=>栄治
1=>五郎
2=>栄太
次の例をみてみましょう。1 開始位置がマイナス指定の場合は後ろから数えます。
この場合は「-2」なので後ろから2つ目から最後までになります。
取り出す個数を入力してないので、指定した位置から最後までになります。
つまり、終わりから2つ目の要素である五郎と栄太までを切り取り、$name2に代入しています。
結果は以下の通りです。
0=>五郎
1=>栄太
次の例をみてみましょう。1 2つ目の要素である栄治から五郎までを2個切り取り、$name2に代入しています。
[取り出す数]を2に指定しているので2つ取り出しています。
結果は以下の通りです。
0=>栄治
1=>五郎
次の例をみてみましょう。1 後ろから3個目の要素である栄治から五郎までを2個切り取り、$name2に代入しています。
結果は以下の通りです。
0=>栄治
1=>五郎
次の例をみてみましょう。1 [取り出す数]にマイナス値を指定すると「指定した箇所」から「マイナス値で指定した箇所から右の要素」を省いたデータを取得できます。
つまりこの例で説明しますと指定した開始位置は0なので太郎から始まって、栄太、こじを省いた残りすべてを$name2に代入します。
結果は以下の通りです。
0=>太郎
1=>栄治
2=>五郎
次の例をみてみましょう。1 この例のようにTRUEを指定すると取り出した要素が元の添え字のまま配列$name2に入れられます。
結果は以下の通りです。
1=>栄治
2=>五郎
次の例をみてみましょう。1 array_sliceで要素を切り出しても元の配列の要素に影響しません。
1の箇所で配列$name1から要素を切り出しても、配列$name1の要素が切り出される分だけなくなることはありません。
結果は以下の通りです。
0=>太郎
1=>栄治
2=>五郎
3=>栄太
1array_splice関数は配列から取り出しの開始位置や取り出す個数を指定して、取り除いた配列を返します。
では例をみてみましょう。1 2番目の要素から2つ取り除いて$number2に代入しています。
ここでの注目点は配列の要素を取り除くことにより元の配列まで影響を受けるということです。
それに対して1では元の配列はそのままの状態のまま影響を受けません)。
最初のprintの出力は以下の通りです。
0=>html
1=>Java
次のprintの出力は以下の通りです。
0=>PHP
1=>c++
次の例をみてみましょう。1 1のように取り出す数を省略すると指定した位置から最後まで取り除かれます。
最初のprintの出力は以下の通りです。
0=>html
1=>Java
2=>c++
次のprintの出力は以下の通りです。
0=>PHP
次の例をみてみましょう。1 array_spliceでは配列の一部分を削除し、新しい要素で置き替えることもできます。
12番目の要素からhtmlが取り除かれてRubyが挿入されています。
最初のprintの出力は以下の通りです。
0=>html
次のprintの出力は以下の通りです。
0=>PHP
1=>Ruby
2=>Java
3=>c++
次の例をみてみましょう。1 挿入する要素に配列も指定できます。
最初のprintの出力は以下の通りです。
0=>html
次のprintの出力は以下の通りです。
0=>PHP
1=>word
2=>powerpoint
3=>Java
4=>c++
1配列の値を1度に複数の変数に代入することができます。
では例をみてみましょう。1 $aにはPHP、$bにはhtml、$cにはJava,$dにはc++が代入されます。
結果は1になります。
次の例をみてみましょう。1 連想配列の場合は前の例のようにしても、うまくいきません。
その場合はlist関数とeach関数の組み合わせを使います。
each を実行して配列のキーと値のペアを順番に返して1で出力します。
つまり、以下のようにnameを$aに、大野を$bに代入し1を出力します。
1
次に以下のようにaddressを$aに、東京都を$bに代入し
1を出力します。

1 次に以下のように年齢を$aに、34を$bに代入し1を出力します。1

1in_array関数は配列に指定した値があるか検索し、値が見つかった場合はTRUE、見つからなかった場合はFALSEを返す関数です。
以下にin_array関数の使用例を示します。
以下の例では検索値PHPは配列$arに存在するのでin_array関数はTRUEを返します。1 結果は1が出力されます。

カテゴリー
PHP

forとifとcontinueを組み合わせて使おう

この章ではcontinueの使い方について説明します。
continueは現在進行している周回を抜けても、ループ自体は続けたい場合に使います。
では例をみてみましょう。1 if ($i==$g)の条件がTRUEの場合、つまり$iが4になったら、その下の1を実行することなく、forの先頭に戻ります。
breakとの違いはループ自体を止めないことです。
実行結果は1 となり、1が抜けています。
つまり、1の箇所だけを飛ばしていることになります。
以下のように、continueをbreakに変えてみますと、$iが4になったら、1を実行することなく、for文を抜けてしまうので、結果は1になります。1

カテゴリー
PHP

whileとifとbreakを組み合わせて使おう

この例ではwhileとifとbreakを組み合わせて使う方法について説明します。
これまではfor文の中でbreakを使っていましたが、ここではwhile文の中でbreakを使います。
では例をみてみましょう。1 この例はwhile文の中にif文が入っている構造です。
①$iに1を代入します。
②($i <= 10)の条件を判定します。
$iは1でTRUEなので、whileの処理文を実行します。
③$iは1なので、if文の条件部分にはマッチしないので、そのままif文はスルーします。
1を実行して1を出力します。
⑤$i++で1を足して、2になります。
⑥($i <= 10)の条件を判定します。
$iは2でTRUEなので、whileの処理文を実行します。
⑦$iは2なので、if文の条件部分にはマッチしないので、そのままif文はスルーします。
1を実行して1を出力します。
⑨$i++で1を足して、3になります。
⑩($i <= 10)の条件を判定します。
$iは3でTRUEなので、whileの処理文を実行します。
⑪3回目のループで初めて、if文の条件式にマッチして1を実行します。
そして、breakがあるのでここでwhile文を抜けます。
結果は以下の通りです。
ループ1回
ループ2回
3回目で抜ける