1. IF文
IFステートメントは、ほとんどの言語で重要な機能であり、条件に基づいてプログラムセグメントを実行します。 PHP の IF ステートメントは C:
に似ていますif (expr)
声明
式で説明したように、 expr は真理値に評価されます。 expr が TRUE の場合、PHP は対応するステートメントを実行し、FALSE の場合は無視します。
$a が $b より大きい場合、次の例は「a が b より大きい」ことを示します:
if ($a >$b)
print "a は b より大きい";
通常、条件に基づいて複数のステートメントを実行する必要があります。もちろん、すべてのステートメントに IF 判定を追加する必要はありません。代わりに、複数のステートメントを 1 つのステートメント グループにグループ化できます。
If ステートメントは他の IF ステートメント内にネストすることができ、プログラムのさまざまな部分を柔軟かつ条件付きで実行できます。
2.ELSE文
通常、特定の条件が満たされた場合には 1 つのステートメントを実行し、条件が満たされない場合には別のステートメントを実行する必要があります。これを行うには ELSE が使用されます。 ELSE は、IF ステートメントを拡張し、IF ステートメントの式が FALSE の場合に別のステートメントを実行します。たとえば、次のプログラムを実行すると、$a が $b より大きい場合は「a は b より大きい」と表示され、それ以外の場合は「a は b より大きくありません」と表示されます。
if ($a>$b) {print "a は b より大きい";
}
その他 {
print "a は b より大きくありません";
}
3. ELSEIFステートメント
ELSEIFは、名前が示すように、IFとELSEを組み合わせたもので、ELSEと同様に、IF式がFALSEの場合に他のステートメントを実行するようにIFステートメントを拡張します。ただし、ELSE とは異なり、ELSEIF 式も TRUE の場合にのみ他のステートメントが実行されます。
1つのIF文の中で複数のELSEIF文を使用できます。 ELSEIF 式が TRUE である最初のステートメントが実行されます。 PHP 3 では、「else if」(2 つの単語として記述) および「elseif」(1 つの単語として記述) を記述しても、同じ効果が得られます。書き方が少し違うだけで (C に詳しい人なら同じです)、結果はまったく同じです。
ELSEIF ステートメントは、IF 式および以前の ELSEIF 式が FALSE で、現在の ELSEIF 式が TRUE の場合にのみ実行されます。
以下は、ELSEIF と ELSE を含むネストされた IF ステートメントです。
if ($a==5):
「a は 5 に等しい」を出力します;
「...」を印刷します;
エルセイフ($a==6):
「a は 6 に等しい」を出力します;
「!!!」を印刷します;
その他:
print "a は 5 でも 6 でもありません";
endif;
4. WHILEステートメント
WHILEループはPHP 3の単純なループです。 C と同じように。 WHILE ステートメントの基本的な形式は次のとおりです:
WHILE(expr)ステートメント
WHILE文の意味はとてもシンプルです。これは、WHILE 式が TRUE である限り、ネストされたステートメントを繰り返し実行するように PHP に指示します。 WHILE 式の値は各ループの開始時にチェックされるため、ネストされたステートメント内でその値が変更された場合でも、この実行はループの終わりまで終了しません (PHP がネストされたステートメントを実行するたびにループと呼ばれます) )。 IF ステートメントと同様に、中括弧を使用してステートメントのグループを囲み、同じ WHILE ループ内で複数のステートメントを実行できます。
WHILE(expr): ステートメント ... ENDWHILE;
次の例はまったく同じで、すべて 1 から 10 までの数字を入力します。
/* 例 1 */
$i=1;
while ($i
print $i++; /* 出力される値は増分前 (
後) の $i になります。増分) */
}
/* 例 2 */
$i=1;
その間 ($i
$i を印刷します;
$i++;
終わりに;
5. DO..WHILE ステートメント
DO..WHILE は WHILE ループとよく似ていますが、式が true かどうかをループの先頭ではなく各ループの最後にチェックする点が異なります。 厳密な WHILE ループとの主な違いは、厳密な WHILE ループ (ループの先頭でチェックされる) の代わりに、DO..WHILE の最初のループが実行される必要がある (真理値式はループの最後でのみチェックされる) ことです。各ループ) 真理式。最初が FALSE の場合、ループはすぐに実行を終了します)。
DO..WHILE ループの形式は 1 つだけです:
$i = 0;
する{
$i を印刷します;
} while ($i>0);
上記のループは一度だけ実行されますが、それは最初のループの後、真理値式をチェックするとFALSE($iが0以下)と計算されてループの実行が終了するからです。
6. FORループ文
FORループはPHPで最も複雑なループです。 C と同じように。 FOR ループの構文は次のとおりです:
FOR (expr1; expr2; expr3) ステートメント
最初の式(expr1)はループの先頭で無条件に評価(実行)されます。
ループを通過するたびに、式 expr2 が評価されます。結果が TRUE の場合、ループとネストされたステートメントは引き続き実行されます。結果が FALSE の場合、ループ全体が終了します。
各ループの最後で、expr3 が評価 (実行) されます。各式は null になる可能性があります。 expr2 が空の場合、ループの数は可変です (PHP のデフォルトは C と同様に TRUE です)。 FOR 真理式の代わりに条件付き BREAK ステートメントでループを終了する場合を除き、これを行わないでください。
次の例を考えてみましょう。それらはすべて 1 から 10 までの数字を表示します:
/* 例 1 */
for ($i=1; $i
$i を印刷します;
}
/* 例 2 */
for ($i = 1;;$i++) {
if ($i >10) {
休憩;
}
$i を印刷します;
}
/* 例 3 */
$i = 1;
for (;;) {
if ($i >10) {
休憩;
}
$i を印刷します;
$i++;
}
もちろん、最初の例が明らかに最良ですが、空の式は FOR ループ内の多くの状況で使用できることがわかります。
他の言語には、配列またはハッシュ テーブルを反復処理するための foreach ステートメントがあります。 PHP は、while ステートメントと list()、each() 関数を使用してこの機能を実現します。
7. SWITCH選択ステートメント
SWITCH ステートメントは、同じ式に対する一連の IF ステートメントのようなものです。多くの場合、同じ変数 (または式) を多くの異なる値と比較し、異なる比較結果に基づいて異なるプログラム セグメントを実行する必要があります。これが SWITCH ステートメントの目的です。
次の 2 つの例は、同じことを異なる方法で実行しています。1 つは一連の IF ステートメントを使用し、もう 1 つは SWITCH ステートメントを使用しています。
/* 例 1 */if ($i == 0) {
print "i = 0";
}
if ($i == 1) {
print "i = 1";
}
if ($i == 2) {
「i = 2」を出力します;
}
/* 例 2 */
スイッチ($i) {
ケース0:
print "i = 0";
休憩;
ケース1:
print "i = 1";
休憩;
ケース2:
「i = 2」を出力します;
休憩;
}
(2)、REQUIREステートメント
REQUIRE ステートメントは、C の前処理 #include と同じように、指定されたファイルに自身を置き換えます。
これは、関数を呼び出すたびに異なるファイルの内容を含めるために、require() ステートメントをループ構造に置くことはできないことを意味します。これを行うには、INCLUDE ステートメントを使用します。
require('header.inc');
(3)、INCLUDEステートメント
INCLUDEステートメントは、指定されたファイルをインクルードします。
INCLUDE が見つかるたびに、INCLUDE ステートメントには指定されたファイルがインクルードされます。したがって、ループ構造内で INCLUDE ステートメントを使用して、一連の異なるファイルを含めることができます。
$files = array('first.inc', 'first.inc', 'third.inc');
for ($i = 0; $i
}
(4)、関数
関数は次の構文で定義できます:
function foo( $arg_1, $arg_2, ..., $arg_n ) {
echo "関数例.n";
$retvalを返す;
}
他の関数やクラス定義も含め、有効な PHP3 コードを関数内で使用できます
1.関数の戻り値
関数はオプションの return ステートメントを通じて値を返すことができます。戻り値は、リストやオブジェクトなど、任意の型にすることができます。
関数 my_sqrt( $num ) {
$num * $numを返します;
}
echo my_sqrt( 4 ) // '16'を出力します。
関数は同時に複数の値を返すことはできませんが、リストを返すことで実現できます:
関数 foo() {
配列( 0, 1, 2 );
を返す
}list( $zero, $one, $two ) = foo();
2.パラメータ
外部情報は、パラメーター リストを通じて関数に渡すことができます。パラメーター リストは、カンマで区切られた一連の変数および/または定数です。
PHP3は、値型パラメータ(デフォルト)、変数パラメータ、デフォルトパラメータをサポートしています。可変長パラメータリストはサポートされていませんが、配列を転送することで実装できます。
3. 関連パラメータ
デフォルトでは、関数パラメータは値で渡されます。関数が受信引数の値を変更できるようにする場合は、可変引数を使用できます。
関数の仮パラメータを常に可変パラメータにしたい場合は、関数を定義するときに仮パラメータの前に (&) を付けることができます:
関数 foo( &$bar ) {
$bar .= ’とその他の何か。’;
}
$str = 'これは文字列です、';
foo( $str );
echo $str; // 「これは文字列であり、何か追加のものです。」を出力します。
デフォルト関数に可変パラメータを渡したい場合(その仮パラメータは可変パラメータではありません)、関数を呼び出すときに実際のパラメータにプレフィックス(&)を追加できます。
関数 foo( $bar ) {$bar .= ’とその他の何か。’;
}
$str = 'これは文字列です、';
foo( $str );
echo $str; // 'これは文字列です'
を出力します。foo( &$str );
echo $str; // 「これは文字列であり、何か追加のものです。」を出力します。
4.デフォルト値関数は次のように C++ スタイルのデフォルト値を定義できます:
function makecoffee( $type = "cappucino" ) {
echo "$type.n のカップを作る";
}
エコーメイクコーヒー();
echo makecoffee( "エスプレッソ" );
上記のコードの出力は次のとおりです:
カプチーノを作る
エスプレッソを一杯作る
デフォルトパラメータを使用する場合は、デフォルト値を持つすべてのパラメータをデフォルト値のないパラメータの後に定義する必要があることに注意してください。そうしないと、期待どおりに機能しません。
5.クラス
クラスとは変数と関数の集合です。クラスは次の構文で定義されます:
クラスカート{
var $items; // ショッピングカート内の商品
// $artnr の $num 件の記事をカートに追加します
関数 add_item($artnr, $num) {
$this->items[$artnr] += $num;
}
// $artnr の $num 記事をカートから取り出します
関数remove_item($artnr, $num) {
if ($this->items[$artnr] >$num) {
$this->items[$artnr] -= $num;
true を返す;
} 他 {
false を返す;
}
}
}
?>
上記は Cart というクラスを定義しており、このクラスには連想配列と、カートに商品を追加したりカートから商品を削除したりするための 2 つの関数が含まれています。
クラスは実際の変数のプリミティブなモデルです。 new 演算子を使用して、必要な型の変数を作成します。
$cart = 新しいカート;
$cart->add_item("10", 1);
これにより、Cartクラス$cartのオブジェクトが作成されます。オブジェクトの関数 add_item() が呼び出され、10 番目の項目に 1 が追加されます。
他のクラスから授業を延長することも可能です。拡張クラスまたは派生クラスには、基本クラスのすべての変数と関数、および拡張定義で定義した内容が含まれます。これは extends キーワードを使用して行われます。
クラス Named_Cart は Cart を拡張します {
var $owner;
関数 set_owner($name) {
$this->owner = $name;
}
}
ここでは、Cart クラスのすべての変数と関数を継承し、変数 $owner と関数 set_owner() を追加する、Named_Cart という名前のクラスが定義されています。 作成したnamed_cartクラスの変数でカートの所有者を設定できるようになりました。 named_cart 変数では、通常のカート関数を引き続き使用できます:
$ncart = new Named_Cart // 名前付きカートを作成します
;
$ncart->set_owner("kris") // カートに名前を付けます;
print $ncart->owner // カートの所有者名を出力します$ncart->add_item("10", 1) // (カートから機能を継承)
関数内の変数$thisは現在のオブジェクトを意味します。現在のオブジェクトのすべての変数または関数にアクセスするには、$this->something フォームを使用する必要があります。
クラス内のコンストラクターとは、あるクラスの新しい変数を作成するときに自動的に呼び出される関数です。クラス内の同じ名前の関数がコンストラクターです。
クラス Auto_Cart は Cart を拡張します {
関数 Auto_Cart() {
$this->add_item("10", 1);
}
}
ここでは Auto_Cart クラスが定義されており、新しい操作が実行されるたびに項目 10 を変数初期化に設定するコンストラクターを Cart クラスに追加します。コンストラクターはオプションのパラメーターを持つこともできるため、非常に便利です。
クラス Constructor_Cart {
関数 Constructor_Cart($item = "10", $num = 1) {
$this->add_item($item, $num);
}
}
// 同じ古い退屈なものを買う。
$default_cart = 新しい Constructor_Cart;
// 実際に買い物をする…
$ Different_cart = new Constructor_Cart("20", 17);
を表現する場合の C: if (expr) ステートメントに似ています。