<span class="unnamed3">第 1 章 PHP3 の概要 <br><br>PHP は、サーバー組み込みのスクリプト言語の登場により、Unix 上で動的 Web を迅速に開発できるようになりました。 <br> PHPは1994年の秋にRasmus Lerdorfによって考案されました。最初の未公開バージョンは彼のホームページにあり、オンライン履歴書を閲覧している人々と連絡を取り合うために使用されていました。ユーザーに提供された最初のバージョンは 1995 年初めにリリースされ、個人のホームページ作成ツールとしてのみ使用されていました。当時は、いくつかのマクロのみを理解する非常に単純な分析エンジンと、ホームページ情報フィードバック用のツール セット (ゲストブック、カウンター、その他いくつか) のみが含まれていました。 1995 年半ばに、ラスムスはパーサー全体を書き直し、それを PHP/FI 2 と名付けました。 FI は、HTML フォーム統合データ用に彼が作成した別のソフトウェア パッケージから来ています。彼は個人用ホームページ ツールとフォーム統合ツールを統合し、mSQL データベースのサポートを追加したため、PHP/FI が誕生しました。それ以来、PHP/FI は驚くべきスピードで普及し、人々はそれを使ってプログラムを書くようになりました。 <br> その使用範囲を正確に数えることはできませんが、推定によると、1996年末までに、世界中で少なくとも15,000のサイトがPHP/FIlを使用していました。 1997 年半ばまでに、この数は 50,000 サイト以上に増加しました。 1997 年半ばには、PHP の開発における大きな転換点も発見されました。このようにして、PHP の開発は、ラスムスの個人的な趣味から、プログラマーのグループによる組織的な作業へとアップグレードされました。 その後、このパーサーは Zeev Suraski と Andi Gutmans によって書き直され、この包括的な書き換えにより、多数の PHP/FI 関数が PHP3 に移植され、PHP3 の基本プロトタイプになりました。 <br> 1998 年半ばまでに、PHP/FI パーサーまたは PHP3 パーサーがバンドルされた C2 の StrongHold Web サーバーや RedHat Linux など、すでに多数の商用製品が登場していました。NetCraft による控えめな推定によれば、PHP は 150,000 人に使用されていました。各サイトで使用されるワールド。さらなる分析により、Netscape の主力製品であるエンタープライズ クラスの WEB サーバーを使用しているサイトの数よりも、その使用がはるかに多いことがわかりました。 PHP3 は、C、Java、および Perl 言語の構文を広範囲に採用し、さまざまな PHP 独自の機能を追加します。 JavaScript や他の言語との違いの 1 つは、PHP3 はサーバー上で実行され、クライアントに表示されるのはサーバー上で実行された結果であるということです。これは、PHP3 スクリプトを使用したい場合は、WEB が必要であることを意味します。サーバーのサポート。 <br> PHP3 は HTTP 認証、Cookie、GIF 画像の作成をサポートしており、最も代表的な機能の 1 つはデータベース層であり、データベースベースの Web ページを非常に簡単に作成できます。現在サポートされているデータベースは以下のとおりです: <br>Oracle、Sybase、mSQL、MySQL、Informix、Solid dBase、ODBC、Unix dbm、PostgreSQL、Adabas D、FilePro Velocis。 <br><br>PHP3 は、POP3、HTTP、SNMP、NNTP、IMAP、その他のプロトコルを使用したサービスによるネットワーク プログラミングもサポートしています。 <br>PHP3 プログラム モード<br><br> HTML から「PHP プログラム モード」に入るには 3 つの方法があります: <br>最初の方法: <? PHP3 ステートメント <br/><br/>例: <br/><? 、SGML 処理命令n"); ?> <br><br><br><br> 2 番目のメソッド: <?PHP PHP3 ステートメント; ?> <br><br>例: <br><?php echo("XML ドキュメントを提供したい場合は、 like thisn"); ?> <br><br><br> 最初の方法: <script language="php"> <br> PHP3 ステートメント; PHP "& GT; <br> Echo (" 一部の編集者 (FrontPage など) は処理命令を好みません"); <br> & lt;/script & gt; )、内部変数 <br><br> 主に整数、浮動小数点数、文字列、配列、オブジェクトが含まれます。 <br><br><br>1 変数を初期化する<br><br> PHPで変数を初期化するには、単純に変数に値を代入します。ほとんどのタイプでは、これが最も簡単です。配列とオブジェクトの場合は、他のメソッドも使用できます。 <br><br>2 配列の初期化<br><br> 配列には、一連の連続する値を使用する方法、または array() 関数を使用して構築する方法のいずれかを使用して値を割り当てることができます (「配列関数」セクションを参照)。 <br> 連続した値を配列に追加するには、添え字なしで配列変数に値を代入するだけです。この値は、配列の最後の要素として配列に追加されます。 <br> 例: <br><br><br> $names[] = "ジル"; // $names[0] = "ジル" <br> $names[1] = "ジャック" <br><br><br> C や Perl と同様に、配列の添字も 0 から始まります。 <br><br>3 オブジェクトの初期化<br><br> オブジェクトを初期化するには、new ステートメントを使用してこの型の変数を作成する必要があります。 <br><br> class foo { <br> function do_foo() { <br> echo "foo を実行しています。";} <br> $bar = new foo; <br> $bar->do_foo(); <br><br><br><br>4 変数のスコープ <br><br> 変数のスコープは、その有効範囲です。ほとんどの PHP 変数にはスコープが 1 つだけあります。ユーザー定義関数でローカル変数スコープを使用します。関数内で使用される変数は、デフォルトではローカル変数に設定されます。例: <br><br> $a=1; /* globalscope */ <br> Function Test() { <br> echo $a; echo ステートメントはローカル変数 $a を出力したいので、関数内の $a は値が割り当てられたことはありません。これが C 言語とは少し異なることに気づくかもしれませんが、C では、ローカル変数によってオーバーライドされない限り、グローバル変数を関数内で直接参照できます。このため、ユーザーが不注意でグローバル変数の値を変更してしまう可能性があります。 PHP では、グローバル変数は関数内で明示的に使用する必要があります。例: <br><br> $a=1; $b=2; 関数 Sum() { <br> echo $b ; 。 $a と $b を関数内でグローバル変数として宣言すると、必要なすべての変数がグローバル世界を参照します。関数が操作できるグローバル変数の数に制限はありません。 <br> スコープのもう 1 つの注目すべき側面は、静的変数です。静的変数はローカル関数内に存在しますが、プログラムが関数を終了してもその値は失われません。次の例を考えてみましょう: <br><br> Function Test() { <br> $a=0; <br> echo $a; <br> $a++; これを 0 に代入して、「0」と入力します。 変数 $a は関数呼び出しの終了後に解放されるため、$a++ の自己インクリメントは効果がありません。現在のカウント結果を失わずにカウント プログラムを効果的にカウントするには、 $a を静的変数として宣言する必要があります。 <br><br>これで、Test() 関数が呼び出されるたびに、$a の値が出力され、その値が増加します。 <br><br> 再帰関数を使用する場合、静的変数は必須です。再帰関数は、それ自体を呼び出す関数です。反復回数は不確実であるため、再帰関数を作成するときは十分に注意してください。再帰プロセスを終了するための十分な条件が揃っていることを確認する必要があります。 10 までカウントする単純な再帰関数は次のとおりです。 <br> } <br><br><br><br>(2) 動的変数<br><br> 変数変数名を使用した方が便利な場合があります。つまり、動的に割り当てて使用できる変数名です。通常の変数の代入文は次のとおりです: <br><br> $a = "hello"; <br><br> 動的変数は、変数の値を新しい変数の名前として参照します。上記の例では、$をダブルでhelloを変数名として使用することができます。例: <br><br> $$a = "world"; <br><br> この時点で、$a の内容は「hello」、$hello の内容は「world」という 2 つの変数が定義され、PHP シンボル ツリーに格納されます。 。 したがって、ステートメント echo "$a ${$a}"; の表示結果は、 echo "$a $hello"; とまったく同じになります。 (3) PHP 外部変数 <br><br>1. and POST) <br> <br> フォームが PHP3 スクリプトに送信されると、PHP はフォーム内の変数を自動的に取得します。例: <br><br> <form action="foo.php3" method="post"> <br> Name: <input type="text" name="name"><br> <br> <input type= " submit"> <br> </form> <br><br><br> "submit" を押すと、PHP3 はユーザーが入力したすべてのコンテンツを含む変数 $name を自動的に生成します。 <br><br>2. IMAGE SUBMIT 変数名<br><br> フォームを送信するとき、次のマークアップを使用して標準の送信ボタンを画像に置き換えることができます: <br><br> <input type=image src="http://edu.cnzz. cn /NewsInfo/image.gif" name="sub"> <br><br>ユーザーが画像をクリックすると、2 つの追加変数 sub_x と sub_y がフォームとともにサーバーに送信されます。これには、ユーザーがグラフ上でクリックした場所の座標が含まれます。経験豊富な人は、ブラウザによって実際に送信される名前にアンダースコアではなくピリオドが含まれていることに気づくかもしれませんが、PHP はピリオドを自動的にアンダースコアに変換します。 <br><br>3、HTTP Cookie <br><br>PHP は HTTP Cookie をサポートしています。 Cookie は、ユーザーとの連絡を維持したり、ユーザーの ID を認証したりするために、クライアントのブラウザにデータを保存します。 setcookie() 関数を使用して Cookie を設定できます。 Cookie は HTTP リクエスト ヘッダーの一部であるため、出力データがユーザーのブラウザに返される前に SetCookie() 関数を呼び出す必要があります。これは、Header() 関数の制限と似ています。クライアントから返された Cookie は、GET メソッドや POST メソッドのデータと同様に、標準の PHP 変数に自動的に変換されます。 <br><br> Cookieに複数の値を設定したい場合は、Cookieの名前に[]を追加します。例: <br><br> SetCookie("MyCookie[]","Testing", time()+3600); <br> 注: パスやドメインが異なる場合を除き、新しい Cookie はブラウザ内の同じ名前の既存の Cookie を上書きします。 <br><br>4. 環境変数 <br><br> PHP は環境変数を通常の変数に自動的に変換します。 <br><br> echo $HOME; /* 設定されている場合、HOME 環境変数を表示します */ <br><br> GET、POST、Cookie 構造からの情報は自動的に PHP 変数に変換されますが、環境変数から明示的に取得するのが最善です。正しい値を確実に取得できるようにするためです。これには getenv() 関数を使用します。変数は putenv() 関数を介して設定することもできます。 <br><br>変数の型変換 <br> PHP は変数を定義するときに明示的な型宣言を必要としません (またサポートしません)。変数の型はその値の型に依存します。つまり、変数 var に文字列値を代入すると、var は文字列変数になります。 var に整数値を代入すると、それは整変数になります。 <br><br>PHP における自動型変換の例は、加算演算子「+」です。いずれかのオペランドが double 型である場合、すべてのオペランドは double 型として計算され、結果も double 型になります。それ以外の場合、すべてのオペランドは整数型として計算され、結果も整数型になります。注: オペランド自体の型は変更されません。型変換は計算中にのみ行われます<br><br> // $foo は文字列 (ASCII 48) <br> // $foo は文字列です。 " 1" (ASCII 49) <br> $foo += 1; // $foo は整数 (2) になります <br> $foo = $foo + 1.3; // $foo は倍精度 (3.3) になります <br> $foo = 5; + "10 Little Piggies"; // $foo は double (15) <br> $foo = 5 + "10 Small Pigs" // $foo は整数 (15) <br><br><br> 変数の型を変更するには、 settype() 関数を使用することもできます。 <br><br>1. 強制型変換<br><br> PHPでの強制型変換はCと同じで、型を入力する必要がある変数の前に括弧内に目的の型名を記述します。 <br><br> $foo = 10; // $foo は整数です <br> $bar = (double) $foo; // $bar は double です <br> 許可されるキャストは次のとおりです: <br> (int), (integer) - 整数にキャストします <br> (real)、(double)、(float) - double へのキャスト <br> (string) - string へのキャスト <br> (array) - 配列 <br> へのキャスト (object) - オブジェクト へのキャスト <br><br><br> 注: 括弧にはタブまたはスペースを含めることができます, 次の関数が計算されます: <br><br> $foo = (int) $bar; <br><br><br> 2. 文字列が数値型として計算される場合、その値と結果の型は次のように決定されます。 <br><br> 文字列に「.」、「e」、「E」の文字が含まれる場合は、double 型として計算されます。それ以外の場合は、整数型として計算されます。 <br> 値は文字列の先頭から数えます。文字列が有効な数値の場合はこの値が使用され、それ以外の場合は値は 0 になります。有効な数値は、符号ビット (オプション) の後に 1 つ以上の数字 (小数点も含まれる場合がある) が続き、その後にオプションの指数が続きます。指数は、「e」または「E」の後に 1 つ以上の数字が続くものです。 <br><br> $foo = 1 + "10.5"; // $foo は double (11.5) <br> $foo = 1 + "-1.3e3"; // $foo は double (-1299) <br> $foo = 1 + "bob-1.3e3"; // $foo は倍精度 (1) <br> $foo = 1 + "bob3"; // $foo は整数 (1) <br> $foo = 1 + "10 Small Pigs"; / $foo は整数 (11) <br> $foo = 1 + "10 Little Piggies"; // $foo は double (11) です <br> PHP3 の算術文字列を見てみましょう。それぞれ論理演算子と比較演算子です。 <br><br> 1.算術演算子<br><br> +: $a + $b プラス $a プラス $b <br> -: $a - $b マイナス $a マイナス $b <br> *: $a * $b に $a を掛ける $a を割るby $b <br> %: $a % $b $a を $b で割った余りを求めます <br><br><br>両方のオペランドが整数値の場合 (文字列は整数値に変換されます)、除算記号 (" /") は整数値 (均等に割り切れる値) を返します。いずれかのオペランドが浮動小数点値の場合、浮動小数点除算が実行されます。 <br><br>2 文字列演算子<br><br> 文字列演算子には文字列連結文字(「.」)のみがあります。 <br><br><br> $a = "こんにちは ";$b = $a . "World!"; // 今 $b = "Hello World!" <br><br> 基本的な代入演算子は「=」です。 <br><br> 代入式の値は代入された値です。たとえば、式 $a = 3 は 3 と評価されます。 これにより、いくつかの複雑なことが可能になります: <br><br> $a = ($b = 4) + 5; // これで、$a は 9 に等しく、$b は 4 になります。 <br><br> 基本的な代入演算子に加えて、「複合演算子」もあります。すべての 2 進数と文字列に対して、変数の自己合成演算を行うことができます。例: <br><br> =: $a = 3; <br> +=:$a += 5; // $a を 8 に設定します。つまり、$a = $a + 5; . :$b .= "There!"; // $b = $b . "There!" と同様に $b を "Hello There!" に設定します <br><br><br><br> 4. ビット演算が許可されます。指定されたデータを設定またはリセットします。 <br><br><br> &: AND演算、$a & $b $aと$bの両方が設定されている場合、結果が設定されます<br> |: OR演算、$a $b、または$aまたは$bのいずれかが設定されます結果は set<br> ~: NOT 演算, ~$a $a が設定されていない場合、結果は set<br><br><br><br>5 になります。 論理演算子<br><br> と: $a と $b および $a と $b 両方が設定されている場合true の場合、結果は true になります<br> or: $a または $b または、$a または $b のいずれかが true の場合、結果は true になります<br> xor: $a xor $b $a と $b が同時に true でない場合time, the result is true<br> ! : ! $a $a が false の場合、結果は true<br> &&: $a && $b $a と $b が同時に true の場合、結果は true<br>| |: $a || $b または $ a または $b のどちらかが true の場合、結果は true になります<br><br><br> 2 つの変数を比較する場合、「AND」と「OR」の演算子が 2 つあるためです。演算子には異なる優先順位があります<br><br>6. 比較演算子<br><br> 比較演算子を使用すると、その名前が示すように、2 つの値を比較できます。 <br><br> ==: $a == $b は $a と等しい $b と等しく、結果は true<br> !=: $a != $b は $a と等しくない は $b と等しくなく、結果は true です<br> < : $a < $ b は $a より小さいです、結果は true です<br/> : $a > $b は $b より大きいです、結果は true です<br> <=: $a <= $b は $a より小さいか等しい $a は $b より小さいか等しい、結果は true です true <br/> >=: $a >= $b はより大きい$a 以上 $b 以上 結果は true <br><br><br><br> 第 4 章 式 <br> 式は PHP の最も重要な要素です。 PHP 3.0 では、作成するほぼすべてが式です。式の最も単純だが正確な定義は、「値を持つもの」です。 <br> 簡単な例は定数と変数です。 「$a = 5」と書くと、$a に値「5」が代入されます。 (この場合、「5」は整数定数です)。ここでは $a を 5 に割り当てます。したがって、 $b = $a と書くと、望ましい結果は $b = 5 になります。つまり、$a は値 5 の式です。 <br><br> 複雑な式の簡単な例は関数です。たとえば、関数 function foo() <br> of について考えてみましょう。関数は、その値が戻り値である式です。 foo() は 5 を返すため、式 'foo()' は 5 と評価されます。 <br><br> PHPの値はもちろん整数に限定されませんし、通常はそうではありません。 PHP は、整数値、浮動小数点値、文字列値の 3 種類の値をサポートします。 PHP は、配列とオブジェクトという 2 つの混合型 (非スカラー) をサポートします。どちらのタイプの値も変数に割り当てたり、関数から返すことができます。 <br><br> PHP 3は式指向の言語なので、ほとんどすべてが式です。先ほど説明した「$a = 5」の例を考えてみましょう。ここには、整定数「5」の値と、同じく 5 に割り当てられている変数 $a の値の 2 つの値があることが簡単にわかります。しかし、実際にはここには追加の値があり、それは代入ステートメント自体の値です。代入ステートメント自体の値は割り当てられる値であり、この場合は 5 です。実際、これは、'$a = 5' が何を行うかに関係なく、5 に評価される式であることを意味します。したがって、「$b = ($a = 5)」のようなステートメントは、「$a = 5; $b = 5;」と同様になります (各ステートメントの最後にセミコロンが付きます)。代入の順序は右から左なので、「$b = $a = 5」と書くこともできます。 <br><br>式の評価の方向のもう 1 つの良い例は、最初に加算、次に加算、そして最初に減算です。 PHP/FI およびその他のほとんどの言語のユーザーは、おそらく variable++ と variable-- に精通しているでしょう。これが自己インクリメントおよび自己デクリメントの操作です。 PHP/FI 2 では、ステートメント '$a++' には値がない (式ではない) ため、代入したり使用したりすることはできません。 PHP 3 では、これらを C と同じ式に変換することで、自動インクリメントおよび自動減算演算の機能が強化されています。 C と同様に、PHP 3 には、最初に追加するものと最後に追加するものという 2 種類の自己追加があります。最初に追加し、後で追加することの本質は、変数自体が追加され、変数自体に同じ効果があるということです。違いは、自己増加式の価値です。最初に '++$variable' の形式で追加し、変数が追加された後に値を計算します (PHP は最初に変数を追加し、次にその値を読み取ります。これは、' の形式で追加することとも呼ばれます)。 $variable++' 事後加算では、まず元の変数 $variable の値を計算してから、自己加算を実行します (PHP は変数の値を読み取った後に自己加算を行うため、これを「事後加算」と呼びます)。 <br> 最も一般的な式は比較式 Mode です。この式は 0 または 1 に評価され、それぞれ FALSE または TRUE を意味します。 PHP は、> (より大きい)、>= (以上)、== (等しい)、< (より小さい)、および <= (以下) をサポートします。この種の式は通常、IF ステートメントなどの条件付き実行で使用されます。 <br/><br/> ここで最後に説明する式は、混合代入式です。 $a をインクリメントしたい場合は、単に '$a++' または '++$a' と書くだけで済むことはすでにご存知でしょう。しかし、インクリメントしたい値が 1 より大きい場合、たとえば 3 ずつ増加させる場合はどうすればよいでしょうか? '$a++' をさらに数回記述することもできますが、これは明らかに効率的または許容可能な方法ではありません。もう 1 つの一般的なアプローチは、「$a = $a + 3」と書くことです。まず '$a + 3' の値を計算し、それを $a に代入して、$a が 3 に加算されるようにします。 PHP 3 では、他のいくつかの言語 (C など) と同様に省略することができるため、より明確、高速、理解しやすくなります。 現在の変数 $a に 3 を加えると、「$a += 3」と書くことができます。この文は、「$a の値を取得し、それに 3 を加えて、それを $a に代入する」を意味します。これにより、ステートメントが短く明確になるだけでなく、実行も高速化されます。式 '$a += 3' の値は、厳密な代入ステートメントと同様、割り当てられた値です。注: これは 3 ではなく、$a に 3 を加えた値です (これが $a に割り当てられます)。この代入モードでは、「$a -= 5」(変数 $a マイナス 5)、「$b *= 7」(変数 $b に 7 を乗算) などの任意の double 演算子を使用できます。 <br/><br/>最後に言及する価値があるのは、式の真理値です。多くの場合 (主に条件付き実行とループ)、式の特定の値は気にせず、それが TRUE を表すか FALSE を表すかだけを気にします (PHP には専用のブール型がありません)。 PHP は、Perl に似た方法を使用して式の真理値を計算します。ゼロ以外の値はすべて TRUE、ゼロは FALSE です。負のゼロの値はゼロではなく、TRUE とみなされます。空の文字列は FALSE になる可能性があり、他のすべての文字列は TRUE であることに注意してください。非定量的な値 (配列およびオブジェクト) の場合 - 値に要素が含まれていない場合は FALSE、それ以外の場合は TRUE。 ️この言語の重要な機能は、条件に基づいてプログラム セグメントを実行することです。 PHP の IF ステートメントは C: <br/><br/> if (expr) <br/><br/> statement <br/><br/><br/> 式のところで説明したように、expr は真理値に評価されます。 expr が TRUE の場合、PHP は対応するステートメントを実行し、FALSE の場合は無視します。 <br/><br/>$a が $b より大きい場合、次の例は「a は b より大きい」と表示します: <br/><br/> if ($a > $b) <br><br> print "a は b より大きい" <br><br><br>通常; 、条件に基づいて複数のステートメントを実行する必要があります。もちろん、すべてのステートメントに IF 判定を追加する必要はありません。代わりに、複数のステートメントを 1 つのステートメント グループにグループ化できます。 <br> If ステートメントは他の IF ステートメント内にネストでき、プログラムのさまざまな部分を柔軟かつ条件付きで実行できます。 <br><br>2. ELSE ステートメント <br><br> 通常、特定の条件が満たされた場合に 1 つのステートメントを実行し、条件が満たされない場合に別のステートメントを実行する必要があります。これを行うには ELSE が使用されます。 ELSE は IF ステートメントを拡張し、IF ステートメントの式が FALSE の場合に別のステートメントを実行します。例えば、次のプログラムを実行すると、$a が $b より大きい場合は「a は b より大きい」と表示され、それ以外の場合は「a は b より大きくない」と表示されます。 $b) { <br> print "a は b より大きい"; <br> } <br> else { <br> print "a は b より大きい" <br> } <br><br><br><br> 3. ELSEIF ステートメント<br><br> ELSEIF は、その名の通り、 IF と ELSE の組み合わせ。ELSE と同様に、IF 式が FALSE の場合に他のステートメントを実行するように IF ステートメントを拡張します。ただし、ELSE とは異なり、ELSEIF 式も TRUE の場合にのみ他のステートメントが実行されます。 <br><br>複数の ELSEIF ステートメントを 1 つの IF ステートメントで使用できます。 ELSEIF 式が TRUE である最初のステートメントが実行されます。 PHP 3 では、「else if」(2 つの単語として記述) および「elseif」(1 つの単語として記述) を記述しても、同じ効果が得られます。書き方が少し違うだけで (C に詳しい人なら同じです)、結果はまったく同じです。 <br><br> ELSEIF文は、IF式とその前のELSEIF式が両方ともFALSEで、現在のELSEIF式がTRUEの場合にのみ実行されます。 <br> 以下は、ELSEIF と ELSE を含む入れ子形式の IF ステートメントです。 <br><br>if ($a==5): <br> print "a == 5"; : <br> print "a = 6"; <br> print "!!!"; else: <br> print "a is not 5 or 6"; <br> endif; WHILE ループは PHP 3 の単純なループです。 C と同じように。 WHILE ステートメントの基本的な形式は次のとおりです: <br><br> WHILE(expr) ステートメント <br><br> WHILE ステートメントの意味は非常に単純です。これは、WHILE 式が TRUE である限り、ネストされたステートメントを繰り返し実行するように PHP に指示します。 WHILE 式の値は各ループの開始時にチェックされるため、ネストされたステートメント内でその値が変更された場合でも、この実行はループの終わりまで終了しません (PHP がネストされたステートメントを実行するたびにループと呼ばれます) )。 IF ステートメントと同様に、中かっこを使用してステートメントのグループを囲み、同じ WHILE ループ内で複数のステートメントを実行できます。 <br><br> WHILE(expr):statement ... ENDWHILE; 次の例はまったく同じです。すべての入力された数値 1 から 10: <br><br><br><br> /* example 1 */ <br> $i=1; <br> while ($i print $i++; /* 出力される値は増分前の $i になります。 (post - <br> インクリメント) */ <br>} <br><br> /* 例 2 */ <br> $i=1; <br> while ($i<=10): print $i <br/>$i++; 5.DO ..WHILE ステートメント<br/><br/> DO..WHILE は WHILE ループとよく似ていますが、式が true かどうかをループの先頭ではなく各ループの最後にチェックする点が異なります。 厳密な WHILE ループとの主な違いは、厳密な WHILE ループ (ループの先頭でチェックされる) の代わりに、DO..WHILE の最初のループが実行される必要がある (真理値式はループの最後でのみチェックされる) ことです。各ループ) 真理式、最初が FALSE の場合、ループはただちに実行を終了します。 <br/><br/> $i = 0; <br/> do { <br/> print $i;最初のループの後、真理値式がチェックされると FALSE ($i は 0 以下) と計算されるため、上記のループは 1 回だけ実行されます。ループの実行が終了します。 <br/><br/> 6. FOR ループ文 <br/><br/> FOR ループは、PHP で最も複雑なループです。 C と同じように。 FOR ループの構文は次のとおりです: <br/><br/> FOR (expr1; expr2; expr3) ステートメント <br/><br/> 最初の式 (expr1) はループの先頭で無条件に評価 (実行) されます。 <br/> ループを通過するたびに、式 expr2 が評価されます。結果が TRUE の場合、ループとネストされたステートメントは引き続き実行されます。結果が FALSE の場合、ループ全体が終了します。 <br/> 各ループの最後で、expr3 が評価 (実行) されます。各式は null になる可能性があります。 expr2 が空の場合、ループの数は可変です (PHP のデフォルトは C と同様に TRUE です)。 FOR 真理式の代わりに条件付き BREAK ステートメントを使用してループを終了する場合を除き、これを行わないでください。 <br/>次の例を考えてみましょう。それらはすべて 1 から 10 までの数字を表示します: <br/><br/> /* example 1 */ <br/> for ($i=1; $i<=10; $i++) { <br/> print $i <br/> } <br/><br/> /* example 2 */ <br/> for ($i = 1;;$i++) { <br/> if ($i > 10) { <br/> break; <br/> } <br/> print $i; <br/> } <br/><br/> /* 例 3 */ $i = 1; (;;) { <br/> if ($i > 10) { <br> break; <br> } <br> print $i もちろん、最初の例が最も優れていますが、これを使用すると、空の式が次のように使用できることがわかります。 FOR ループでは多くの状況が発生します。 <br> 他の言語には、配列またはハッシュ テーブルを反復するための foreach ステートメントがあります。 PHP は、while ステートメントと list()、each() 関数を使用してこの機能を実現します。 <br><br> 7. SWITCH 選択ステートメント <br><br> SWITCH ステートメントは、同じ式に対する一連の IF ステートメントのようなものです。多くの場合、同じ変数 (または式) を多くの異なる値と比較し、異なる比較結果に基づいて異なるプログラム セグメントを実行する必要があります。これが SWITCH ステートメントの目的です。 <br><br>次の 2 つの例は、同じことを異なる方法で実行しています。1 つは一連の IF ステートメントを使用し、もう 1 つは SWITCH ステートメントを使用しています。 0 "; <br> } <br> if ($i == 1) { <br> print "i == 1"; <br> } <br> if ($i == 2) { <br> print "i == 2"; <br> } <br><br> /* 例2 */ <br> switch ($i) { <br> case 0: <br> print "i = 0"; <br> case 1: print "i = 1" <br> case 2: <br> print "i = 2; " ; <br> break; <br> } <br><br><br><br> (2)、REQUIRE文<br><br> REQUIRE文は、Cの前処理#includeと同じように、指定されたファイルに自身を置き換えます。 <br>これは、関数を呼び出すたびに異なるファイルの内容を含めるために、require() ステートメントをループ構造に置くことはできないことを意味します。これを行うには、INCLUDE ステートメントを使用します。 <br><br> require('header.inc'); <br><br>(3), INCLUDE ステートメント <br><br> INCLUDE ステートメントには、指定されたファイルがインクルードされます。 <br> INCLUDE が見つかるたびに、INCLUDE ステートメントには指定されたファイルがインクルードされます。したがって、ループ構造内で INCLUDE ステートメントを使用して、一連の異なるファイルを含めることができます。 <br><br> $files = array('first.inc', 'first.inc', 'third.inc'); <br> for ($i = 0; $i < count($files); $i++) { <br/> include ($files[$i]); <br/><br/><br/> (4), Function <br/><br/> 関数は次の構文で定義できます: <br/><br/> Function foo( $arg_1, $arg_2, ..., $arg_n ) { <br/> echo "関数例.n"; <br/> return $retval; <br/> } <br/><br/><br/>他の関数やクラス定義も含め、関数内で任意の有効な PHP3 コードを使用できます<br/><br/> 1. 関数の戻り値<br/><br/> 関数はオプションにすることができますステートメントは値を返します。戻り値は、リストやオブジェクトなど、任意の型にすることができます。 <br/><br/> function my_sqrt( $num ) { <br/> return $num * $num; <br/> } <br/> echo my_sqrt( 4 ) // 関数は同時に複数の値を返すことはできません。リストを返すことができます 実装するメソッド: <br/><br/><br/><br/> function foo() { <br/> return array( 0, 1, 2 ) <br/> } <br/> list( $zero, $one, $two ) = foo(); <br/>2. パラメータ <br/> <br/> 外部情報は、パラメータ リストを通じて関数に渡すことができます。パラメータ リストは、カンマで区切られた一連の変数および/または定数です。 <br/> PHP3は、値型パラメータ(デフォルト)、変数パラメータ、デフォルトパラメータをサポートしています。可変長パラメータリストはサポートされていませんが、配列を転送することで実装できます。 <br/><br/>3. 関連パラメータ<br/><br/> デフォルトでは、関数パラメータは値で渡されます。関数が受信引数の値を変更できるようにする場合は、可変引数を使用できます。 <br/> 関数の仮パラメータを常に可変パラメータにしたい場合は、関数を定義するときに仮パラメータの前に (&) を付けることができます: <br/><br/> function foo( &$bar ) { <br/> $bar .= ' など追加です。 <br/> デフォルト関数の変数パラメーター (その仮パラメーターは変数パラメーターではありません)、関数を呼び出すときに実際のパラメーターに接頭辞 (&) を追加できます: <br/><br/> function foo( $bar ) { <br/> $bar .= ' と何か余分なもの。 '; <br/> $str = 'これは文字列です、 '; <br/> echo $str; // 'これは文字列です ' <br/> foo( &$str ) ; // 'これは文字列です。' <br/><br/><br/>4. デフォルト値<br/><br/> 関数は次のように C++ スタイルのデフォルト値を定義できます: <br/><br/> function makecoffee( $type = "cappucino" ) { <br/> echo "$type.n のカップを作る"; <br/> } <br/> echo makecoffee(); <br/><br/><br/> 上記のコードの出力は次のとおりです。エスプレッソを一杯作る <br/> デフォルトのパラメータを使用する場合は、デフォルト値を持つすべてのパラメータをデフォルト値のないパラメータの後に定義する必要があることに注意してください。そうしないと、期待どおりに機能しません。 <br/><br/> 5. クラス<br/><br/> クラスとは変数と関数の集合です。クラスは次の構文を使用して定義されます: <br/><br/> ) { <br/> $this->items[$artnr] += $num; <br> } <br> // $artnr の $num 個の記事をカートから取り出します <br>function Remove_item($artnr, $num) { <br> if ($this->items[$artnr] > $num) { <br> $this->items[$artnr] -= $num <br> return true; } else { <br> return false; <br> } <br> } <br> } <br> <br><br><br> 上記は、カートに項目を追加および削除するための 2 つの関数と連想配列を含む Cart というクラスを定義しています。 <br> クラスは実際の変数のプリミティブなモデルです。 new 演算子を使用して、必要な型の変数を作成します。 <br><br> $cart = new Cart; <br> $cart->add_item("10", 1); <br><br><br>これにより、Cartクラス$cartのオブジェクトが作成されます。オブジェクトの関数 add_item() が呼び出され、10 番目の項目に 1 が追加されます。 <br><br> 他のクラスからの延長も可能です。拡張クラスまたは派生クラスには、基本クラスのすべての変数と関数、および拡張定義で定義した内容が含まれます。これは extends キーワードを使用して行われます。 <br><br> class Named_Cart extends Cart { <br> var $owner; <br> function set_owner($name) { <br> $this->owner = $name; <br> } <br> } <br><br><br>ここでNamed_Cartというクラスが定義されており、それが継承されていますCart クラスのすべての変数と関数は、変数 $owner と関数 set_owner() で追加されます。 作成したnamed_cartクラスの変数でカートの所有者を設定できるようになりました。 <br><br> $ncart = new Named_Cart; // 名前付きカートを作成します <br> $ncart->set_owner("kris") // カートに名前を付けます <br> print $ncart-; >owner; // カートの所有者名を出力します <br> $ncart->add_item("10", 1); // (カートから機能を継承) <br><br><br> 関数内の変数 $this は現在のオブジェクトを意味します。現在のオブジェクトのすべての変数または関数にアクセスするには、$this->something フォームを使用する必要があります。 <br> クラスのコンストラクターとは、あるクラスの新しい変数を作成したときに自動的に呼び出される関数です。クラスと同じ名前を持つクラス内の関数はコンストラクターです。 U Class Auto_cart Extends Cart {<br> Function Auto_CART () {<br> $ This-& GT; add_item ("10", 1) <br>}}} ここでは Auto_cart クラスを定義し、項目 10 のコンストラクターを設定します。新しい操作時の変数の初期化用。コンストラクターはオプションのパラメーターを持つこともできるため、非常に便利です。 <br><br> class Constructor_Cart { <br> function Constructor_Cart($item = "10", $num = 1) { <br> $this->add_item($item, $num) <br> } <br> } <br> // 同じような退屈なものを買う. <br> $default_cart = new Constructor_Cart; <br> // 実際に買い物してみます... <br> $ Different_cart = new Constructor_Cart("20", 17); <br> <br> <br> <br> <br><br></span>