中国語
SWITCH ステートメントを理解し、ステートメントの冗長性を回避するには、SWITCH ステートメントが 1 行ずつ (実際にはステートメントごとに) 実行される方法を知ることが非常に重要です。最初はコードは実行されません。 SWITCH 式内のステートメントと同じ値を持つ After a CASE ステートメントが見つかった場合、PHP は SWITCH 本体の終わりまでステートメントを実行し続けます。または、BREAK ステートメントの後に BREAK ステートメントを記述しない場合は、PHP はそのステートメントを実行し続けます。分岐ステートメントの場合、PHP は次の分岐ステートメントの実行を継続します。例:
/* 例 3 */
switch ($i) ) {
ケース 0:
print "i = 0";
case 1:
print "i = 1"; 🎜>ケース 2:
print "i = 2";
ここで、$i が 0 に等しい場合、PHP はすべての print を実行します。 $i が 1 に等しい場合、PHP は残りの 2 つの print ステートメントを実行します。$i が 2 に等しい場合にのみ、期待した実行結果が得られます。したがって、その後は忘れないでください。各ブランチ ステートメント BREAK ステートメント (特定の状況では提供を避けたい場合でも)
特別なブランチは、他のブランチに一致しないものと一致します。次に例を示します。
/* example 4 */
switch ($i) {
case 0:
print "i = 0";
case 1:
print "i = 1"; 🎜>ケース 2:
print "i は 2 に等しい";
default:
print "i は 0、1 に等しくない" or 2" ;
}
言及する価値のあるもう 1 つの事実は、CASE 式はスカラー型、つまり整数または実数型と文字型。配列とオブジェクトは PHP をクラッシュさせることはありませんが、意味がありません。
REQUIRE
REQUIRE ステートメントは、それ自体の代わりに指定されたファイルを使用します。 、C とは異なり、言語の #include ステートメントは非常に似ています。これは、require() ステートメントをループ内に配置して、反復ごとに異なるファイルの内容を含めることを期待できないことを意味します。これを実現するには、INCLUDE ステートメントを使用します。
require ('header.inc');
ステートメントは 1 回実行されるため、ループ本体で INCLUDE ステートメントを使用して、いくつかの異なるファイルをインクルードできます。 >$files = array ('first.inc', 'first.inc' , 'third.inc');
for ($i = 0; $i
include($files[$i]) ;
}
INCLUDE() ステートメントと REQUIRE() ステートメントは毎回異なります。 (実行時のみ)、require() ステートメントは、ファイルの内容が評価されるかどうかに関係なく (たとえば、 FALSE)。
include() は特殊な言語構造であるため、条件ブロック内にある場合は構文ブロックで囲む必要があります。
/* エラー。 、期待どおりではありません */
if ($condition)
else
include($other );
/*以下は正しいです */
if ($condition)
{
include ($file);
else {
include ($other);
ファイルが評価されるとき、パーサーは「HTML モード」になり、最初の PHP 開始タグ () が見つかるまでファイルの内容を出力します。 >
readfile()、virtual() を参照してください。
Function
関数は次の構文を使用して定義できます:
function foo ($arg_1, $ arg_2, ..., $arg_n) {
echo "Example function.n";
return $retval
}
任意の有効な PHP
関数は、参照される前に定義する必要があります。
オプションの return ステートメントを使用すると、
function my_sqrt ($num)
return $ num * $num; 🎜>}
echo my_sqrt (4); // 出力 '16'.
複数の値を返すことができますが、同時に影響は一般化されたテーブル:
function foo()
{
戻り配列 (0, 1, 2)
}
リスト ($zero, $one, $two) ) = foo();
パラメータ
このリストは、カンマ (,) で区切られた変数または定数で構成できます。
PHP3 は、値による変数の受け渡し (デフォルト)、呼び出しによる受け渡し、およびデフォルトのパラメーター値をサポートしていますが、
関数 take_array を渡すことで実現できます。 ($input) {
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
参照渡し
デフォルトでは、関数パラメータは値によって渡されます。関数にそのパラメータの値を変更できるようにしたい場合は、
を呼び出して渡すことができます。関数パラメータを参照渡ししたい場合は、関数定義内でパラメータ名の前にアンパサンド (&) を付けることができます:
function foo( &$bar ) {
$ bar .= ' その他の何か。';
}
$str = 'これは文字列です、';
foo ($str ); 🎜>echo $str; // 出力 'これは文字列であり、何か特別なものです。'
この方法で定義されていない関数の呼び出しをパラメータに渡したい場合は、アンパサンドを追加できます。関数呼び出しのパラメータ名の前に (&) を付けます。
function foo ($bar) {
$bar .= ' と何か追加します。'; 🎜>
$str = 'これは文字列です、';
foo ($str);
echo $str; //これは文字列です、'
foo (&$str);
echo $str; //出力 'これは文字列です。'
デフォルト値
スカラー引数の C++ スタイルのデフォルト値。
function makecoffee ($type = "cappucino") {
echo "Making a cup of $type.n" ; 🎜>}
echo makecoffee ();
echo makecoffee ("espresso");
上記のプログラム セグメントの出力は次のとおりです。 >Making a cup of cappucino.
Making a cup of espresso.
デフォルト値は変数やクラスのメンバーではなく、定数式である必要があります。デフォルトのパラメータの場合、デフォルトはデフォルト以外のパラメータの右側にある必要があります。そうしないと、次のプログラム セグメントを考慮してください。
function makeyogurt ($type = "acidophilus ", $flavour) {
return "$type $flavour.n のボウルを作る";
echo makeyogurt ("raspberry");期待通りに動作します
上記の例の出力は次のとおりです:
警告:
/usr/local/etc/httpd/ の makeyogurt() の呼び出しに引数 2 がありません。 htdocs/php3test/functest.html 41 行目
ラズベリーのボウルを作る .
次に、上記を以下と比較してください:
function makeyogurt ($flavour, $ type = "acidophilus"){
return "$type $flavour.n のボウルを作る";
}
echo makeyogurt ("ラズベリー");//通常の動作
この例の出力は次のとおりです:
アシドフィルス ラズベリーのボウルを作成します
OLD_FUNCTION
OLD_FUNCTION ステートメントを使用してボウルを宣言できます。関数に PHP/FI2 構文を使用します (「function」を「old_function」に置き換えるだけです。
これは非推奨の機能であり、PHP/FI2 から PHP3 への変換でのみ使用する必要があります。
OLD_FUNCTION モードで定義された関数は、PHP の内部コードから呼び出すことはできません。これらのケースの 1 つは、usort()、array_walk()、register_shutdown_function() などの関数でそれらを使用できないことを意味します。交換関数を記述する方法を使用して、OLD_FUNCTION モード (通常の PHP3 形式) で関数を呼び出すことができます。
CLASS
クラスは、変数と、それらの変数を使用する関数の組み合わせです。次の構文を使用してクラスを定義します。
// $artnr の $num 個の記事をカートに追加します <🎜; >
function add_item ($artnr, $num) { $this->items[$artnr] += $num; }
// $artnr の $num 個の記事をカートから取り出します
function delete_item ($artnr, $num) {
if ($this->items[$artnr] > $num) {
$this-> items[$artnr] -= $num;
return true;
} else {
return false; }
}
?>
上記のように、Cart という名前のクラスが定義されています。このクラスは、項目を記述する複数の配列と、項目の追加と削除のための関数で構成されます。
クラスは型であり、実際の変数の設計図であることを意味します。設計に応じて、変数のグループとそれらに対するいくつかの新しい操作を作成できます。例は次のとおりです。
$cart = new Cart;
$cart->add_item("10", 1); 🎜>
上に示すように、Cart クラスのオブジェクト $cart が作成されます。このオブジェクトの関数 add_item() は、項目番号 10 の項目を追加するために呼び出されます。
クラスは他のクラスを使用して拡張できます。この拡張クラスまたは継承クラスには、基本クラスのすべての変数と関数が含まれており、独自の拡張定義を追加することもできます。この方法で定義するには、拡張定義キーワードを使用する必要があります。
class Named_Cart extends Cart {
var $owner;
function set_owner ($name) {
$this-> ;owner = $name;
}
}
上記は、すべての変数と関数を含む Named_Cart という名前のクラスを定義しています。 Cart クラス、変数 $owner、関数 set_owner() も追加されます。名前付きカートを作成し、カート所有者の名前を取得できます。 Named_Cart クラスでは、cart クラスに属する通常の関数も使用できます。
$ncart = new Named_Cart; // 名前付きカートを作成します
$ncart->set_owner ("kris") // カートに名前を付けます
print $ncart->owner; // カートの所有者名を出力します
$ncart->add_item ("10", 1) // (カートから継承された機能)
このクラスの関数では、変数 $this がこのオブジェクトを表します。現在のオブジェクト内で、$this->something を使用して変数や関数にアクセスできます。
新しいクラスを作成すると、自動的に呼び出されるコンストラクター関数があります。関数の名前がクラスの名前と同じ場合、それはコンストラクターになります。
class Auto_Cart extends Cart {
function Auto_Cart () {
$this->add_item ("10", 1);
}
}
上記の例では、定義 Auto_Cart という名前のクラスが作成され、元の Cart クラスにコンストラクター関数が追加されます。このコンストラクター関数が Cart クラスを初期化するために使用するメソッドは、プロジェクトのクラスが作成されるたびに項目番号を追加することです。 。コンストラクターは、任意に選択できるいくつかの情報を表示することもできるため、非常に便利です。
class Constructor_Cart {
function Constructor_Cart ( $item = "10" , $num = 1) {
$this->add_item ($item, $num)
}
}
// ショップ同じ古い退屈なもの
$default_cart = new Constructor_Cart;
// 実際に買い物してみましょう...
$ Different_cart = new Constructor_Cart (" 20", 17);