PHP は、動的でインタラクティブなサイトを作成するための強力なサーバーサイド スクリプト言語です。
PHP ハイパーテキスト プリプロセッサ
PHP では、HTML のみを出力することに限定されません。画像、PDF ファイル、さらには Flash ムービーをエクスポートすることもできます。 XHTML や XML などのテキストを出力することもできます。
PHP スクリプトはドキュメント内のどこにでも配置できます。
PHP スクリプトは で終わります:
<?php// 此处是 PHP 代码?>
PHP ファイルのデフォルトのファイル拡張子は「.php」です。
PHP ファイルには通常、HTML タグといくつかの PHP スクリプト コードが含まれています。
<?php// 这是单行注释# 这也是单行注释/*这是多行注释块它横跨了多行*/?>
ただし、PHP では、すべての変数で大文字と小文字が区別されます。
変数は情報を保存するコンテナです
PHP には 3 つの異なる変数スコープがあります:
通常、関数が完了/実行されるとき、すべての変数を削除します。ただし、ローカル変数を削除したくない場合もあります。これを達成するにはさらなる作業が必要です。
これを実現するには、最初に変数を宣言するときに static キーワードを使用します
PHP には、echo と print という 2 つの基本的な出力メソッドがあります。
echo と print の違い:
ヒント: echo は値を返さないため、print よりわずかに高速です。
<?phpecho "<h2>PHP is fun!</h2>";echo "Hello world!<br>";echo "This", " string", " was", " made", " with multiple parameters.";?>
<?phpprint "<h2>PHP is fun!</h2>";print "I'm about to learn PHP!";?>
<?php $cars=array("Volvo","BMW","SAAB");var_dump($cars);?>
NULL 値は、変数が空かどうかを示します。空の文字列と null 値のデータベースを区別するためにも使用されます。
値を NULL に設定することで変数をクリアできます
定数は変数に似ていますが、一度定義すると、変更したり未定義にしたりすることはできません。
PHP 定数を設定する
<?phpdefine("GREETING", "Welcome to W3School.com.cn!", true);echo greeting;?>
<?php $x=10; $y=6;echo ($x + $y); // 输出 16echo ($x - $y); // 输出 4echo ($x * $y); // 输出 60echo ($x / $y); // 输出 1.6666666666667echo ($x % $y); // 输出 4?>
. | 串接 | $txt1 = "Hello" $txt2 = $txt1 . " world!" | 现在 $txt2 包含 "Hello world!" |
.= | 串接赋值 | $txt1 = "Hello" $txt1 .= " world!" | 现在 $txt1 包含 "Hello world!" |
++$x | 前递增 | $x 加一递增,然后返回 $x |
$x++ | 后递增 | 返回 $x,然后 $x 加一递增 |
--$x | 前递减 | $x 减一递减,然后返回 $x |
$x-- | 后递减 | 返回 $x,然后 $x 减一递减 |
PHP 比较运算符用于比较两个值(数字或字符串):
== | 等于 | $x == $y | 如果 $x 等于 $y,则返回 true。 |
=== | 全等(完全相同) | $x === $y | 如果 $x 等于 $y,且它们类型相同,则返回 true。 |
!= | 不等于 | $x != $y | 如果 $x 不等于 $y,则返回 true。 |
<> | 不等于 | $x <> $y | 如果 $x 不等于 $y,则返回 true。 |
!== | 不全等(完全不同) | $x !== $y | 如果 $x 不等于 $y,且它们类型不相同,则返回 true。 |
> | 大于 | $x > $y | 如果 $x 大于 $y,则返回 true。 |
< | 小于 | $x < $y | 如果 $x 小于 $y,则返回 true。 |
>= | 大于或等于 | $x >= $y | 如果 $x 大于或者等于 $y,则返回 true. |
<= | 小于或等于 | $x <= $y | 如果 $x 小于或者等于 $y,则返回 true。 |
and | 与 | $x and $y | 如果 $x 和 $y 都为 true,则返回 true。 |
or | 或 | $x or $y | 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
xor | 异或 | $x xor $y | 如果 $x 和 $y 有且仅有一个为 true,则返回 true。 |
&& | 与 | $x && $y | 如果 $x 和 $y 都为 true,则返回 true。 |
|| | 或 | $x || $y | 如果 $x 和 $y 至少有一个为 true,则返回 true。 |
! | 非 | !$x | 如果 $x 不为 true,则返回 true。 |
PHP 配列演算子は配列を比較するために使用されます:
+ | Union | $x + $y | $x と $y の和集合 (重複をオーバーライドしない)キー) |
== | Equal | $x == $y | $x と $y が同じキーと値のペアを持つ場合、true を返します。 |
=== | Congruent | $x === $y | $x と $y が同じ順序と型の同じキー/値ペアを持つ場合に true を返します。 |
!= | 等しくない | $x != $y | $x が $y と等しくない場合に true を返します。 |
<> | 不等 | $x <> $y | $x が $y と等しくない場合に true を返します。 |
!== | 合同ではありません | $x !== $y | $x が $y と完全に異なる場合に true を返します。 |
在 PHP 中,我们可以使用以下条件语句:
在 PHP 中,我们有以下循环语句:
foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。
<?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>";}?>
页面加载时函数不会立即执行。
函数只有在被调用时才会执行。
<?phpfunction setHeight($minheight=50) { echo "The height is : $minheight <br>";}setHeight(350);setHeight(); // 将使用默认值 50setHeight(135);setHeight(80);?>
在 PHP 中, array() 函数用于创建数组:
array();
在 PHP 中,有三种数组类型:
索引是自动分配的(索引从 0 开始):
$cars=array("Volvo","BMW","SAAB");或者:$cars[0]="Volvo";$cars[1]="BMW";$cars[2]="SAAB";
count() 函数用于返回数组的长度(元素数)
<?php$cars=array("Volvo","BMW","SAAB");$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>";}?>
关联数组是使用您分配给数组的指定键的数组。
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"4");或者:$age['Peter']="35";$age['Ben']="37";$age['Joe']="4";
<?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>";}?>
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。
<?php echo $_SERVER['PHP_SELF'];echo "<br>";echo $_SERVER['SERVER_NAME'];echo "<br>";echo $_SERVER['HTTP_HOST'];echo "<br>";echo $_SERVER['HTTP_REFERER'];echo "<br>";echo $_SERVER['HTTP_USER_AGENT'];echo "<br>";echo $_SERVER['SCRIPT_NAME'];?>
PHP $_REQUEST 用于收集 HTML 表单提交的数据。
PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。$_GET 也可以收集 URL 中的发送的数据。
PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据(form-data)。
$_GET 是通过 URL 参数传递到当前脚本的变量数组。
$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。
通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
GET 可用于发送非敏感的数据。
通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
さらに、POST は、ファイルをサーバーにアップロードする際のマルチパート バイナリ入力などの高レベルの機能をサポートします。
ヒント: 開発者は、フォーム データを送信するために POST を好みます。
$_SERVER["PHP_SELF"] は、現在実行中のスクリプトのファイル名を返すスーパーグローバル変数です。
そのため、$_SERVER["PHP_SELF"] は、別のページにジャンプするのではなく、フォーム データをページ自体に送信します。このようにして、ユーザーはフォーム ページでエラー メッセージ情報を取得できます。
htmlspecialchars() 関数は、特殊文字を HTML エンティティに変換します。------------------------------------------------ -------------------------------------------------- -------------
PHP は 8 つのプリミティブ データ型をサポートします。
4 つのスカラー型:
array (配列)
resource (リソース)
mixed (mixed) type)
注: 式の値と型を確認したい場合は、var_dump() 関数を使用します。
デバッグ用に読みやすい型式を取得したいだけの場合は、gettype() 関数を使用します。型を表示するには、gettype() を使用せず、 is_type 関数を使用します
$a_bool = TRUE; // boolean
$a_str = "foo" / / 文字列
$a_str2 = 'foo'; // 文字列
$an_int = 12; // 整数
echo gettype($a_bool); // 出力: boolean
echo gettype($a_str); out : string
// これが整数の場合、4 ずつ増加します
if (is_int($an_int)) {
$an_int += 4;
}
// $bool が文字列の場合、出力します
/ / (何も出力しません)
if (is_string($a_bool)) {
echo "String: $a_bool";
?>
var_dump((bool) "") // bool(false)
var_dump((bool) 1); ( bool) -2); // bool(true)
var_dump((bool) "foo") // bool(true)
var_dump((bool) 2.3e5); ) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?> ;
$a = 1234; // 10 進数
$a = -123; // 8 進数 (10 進数の 83 に等しい)
$ a = 0x1A; // 16 進数 (10 進数の 26 に等しい)
PHP_INT_ で表すことができます。 SIZE
、PHP 4.4 以降.0 および PHP 5.0.5 以降では、最大値は定数
PHP_INT_MAX
で表すことができます。
警告 不正な数値 (つまり、8 または 9) が 8 進数に渡された場合、残りの桁は無視されます。
var_dump(01090) // 8 進数 010 = 10 進数 8
;
PHP には整数の除算用の演算子がありません。 1/2 は float0.5 を生成します。値は、小数部分を破棄して整数にキャストすることも、より適切に丸めるためにround()関数を使用することもできます。 var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)) // int(3)
var_dump(round(25/7)); // float(4)
?>
予期しない結果が生じる可能性があるため、未知の小数を整数にキャストしないでください。
echo (int) ( (0.1+0.7) * 10 );
?>
浮動小数点数を比較する回りくどい方法:
$a = 1.23456789;
$b = 1.234; 56780;
$epsilon = 0.00001; $a-$b)<.この結果は、未定義または浮動小数点演算で表現できない値を表します。この値を他の値と緩くまたは厳密に比較すると、FALSE
となります。
NAN
は任意の個別の値を表すため、
NAN
はそれ自体を含む他の値と比較されるべきではなく、 is_nan() を使用してチェックされる必要があります。
PHP は 256 文字セットしかサポートできないため、Unicode はサポートされていません。 注意: 文字列の最大サイズは 2GB に達することがあります。
& & & & & & & & & & & & & & & & & c 's
// 複数行入力可能
Strings this に newLines を埋め込んでいますそのままです
大丈夫です';
// 出力: アーノルドはかつて言いました: 「また来ます」
echo 'アーノルドはかつて言いました: 「また来ます」
// 出力: あなたは削除しましたC:*.* ?
echo 'C:\*.* を削除しましたか?';
// 出力: C:*.* を削除しましたか?
echo 'C:*.* を削除しましたか?'; : これは展開されません : n a newline
echo 'これは展開されません: n a newline';
// 出力: 変数は $expand $either ではありません
echo '変数は $expand ではありません
;
二重引用符で定義された文字列の最も重要な特徴は、変数が解析されることです
文字列を表現する 3 番目の方法は次のとおりです。ヒアドキュメント ステートメントを使用するには 法的構造:< ;<<。演算子の後に識別子を入力し、次に改行を入力します。次に文字列 string 自体が続き、最後に前に定義した識別子が終了マークとして使用されます。注: ヒアドキュメント構造体とは異なり、nowdoc 構造体は、クラスの属性または定数を初期化するために使用できます。
文字列が二重引用符またはヒアドキュメント構造で定義されている場合、その中の変数が解析されます。
配列:
key は整数または文字列です。値は任意の型にすることができます。 PHP は実際にはインデックス配列と連想配列を区別しないため、PHP 配列には整数型と文字列型の両方のキー名を含めることができます。
一部のユニットのみキー名を指定
$array = array(
"a ",
"b", 6 => "c", "d", ); var_dump($array); ?>
Note:试图访问一个未定义的数组键名与访问任何未定义变量一样:会导致 E_NOTICE 级别错误信息,其结果为 NULL。
要修改某个值,通过其键名给该单元赋一个新值。要删除某键值对,对其调用 unset() 函数。
$arr = array(5 => 1, 12 => 2);
$arr[] = 56; // This is the same as $arr[13] = 56;
$arr["x"] = 42; // This adds a new element to
unset($arr[5]); // This removes the element from the array
unset($arr); // This deletes the whole array
?>
例子:
// 创建一个简单的数组
$array = array(1, 2, 3, 4, 5);
print_r($array);
// 现在删除其中的所有元素,但保持数组本身不变:
foreach ($array as $i => $value) {
unset($array[$i]);
}
print_r($array);
// 添加一个单元(注意新的键名是 5,而不是你可能以为的 0)
$array[] = 6;
print_r($array);
// 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>
以上例程会输出:
Array( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5)Array()Array( [5] => 6)Array( [0] => 6 [1] => 7)
Note:unset() 函数允许删除数组中某个键。要注意数组将不会重建索引。如果需要删除后重建索引,可以用 array_values() 函数。
$a = array(1 => 'one', 2 => 'two', 3 => 'three');
unset($a[2]);
/* will produce an array that would have been defined as
$a = array(1 => 'one', 3 => 'three');
and NOT
$a = array(1 => 'one', 2 =>'three');
*/
$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
?>
foreach 控制结构是专门用于数组的。它提供了一个简单的方法来遍历数组。
整数、浮動小数点、文字列、ブール型、およびリソース型の場合、値を配列に変換すると、添字が 0 (このスカラーの値) である要素を 1 つだけ含む配列が得られます。つまり、(array)$scalarValue は array($scalarValue) とまったく同じです。
NULL を配列に変換すると、空の配列になります。
array_diff() と配列演算子を使用して配列を比較できます。
オブジェクトをオブジェクトに変換しても、何も変わりません。他の型の値がオブジェクトに変換される場合、組み込みクラス stdClass のインスタンスが作成されます。値が NULL の場合、新しいインスタンスは空です。配列をオブジェクトに変換すると、キーが対応する値を持つプロパティ名になります。他の値の場合は、scalar という名前のメンバー変数に値が含まれます。
$obj = (object) 'ciao';
echo $obj->scalar; // 'ciao' を出力します
Resource リソースは特殊な種類です変数は外部リソースへの参照を保持します。リソースは特殊な関数
NULL
の値によって作成され、使用されます。特殊な
NULL 値は、変数に値がないことを示します。 NULL 型で使用できる値は NULL のみです。
次の場合、変数は
NULL であるとみなされます。 NULL の値が割り当てられます。まだ値が割り当てられていません。 unset()です。
$var を使用して変数を null に変換 (設定解除) しても、変数は削除されず、その値の設定も解除されません。
NULL 値を返すだけです。
call_user_func() や usort() などの一部の関数は、ユーザー定義のコールバック関数をパラメータとして受け入れることができます。コールバック関数は単純な関数だけでなく、静的クラス メソッドなどのオブジェクト メソッドも使用できます。
擬似型と変数
mixed は、パラメーターが複数の異なる (ただし、すべてではない) 型を受け入れることができることを示します。
たとえば、gettype() はすべての PHP タイプを受け入れることができ、str_replace() は文字列と配列を受け入れることができます。
number は、パラメーターが整数または浮動小数点数であることを示します。戻り値の型として
void は、関数の戻り値が役に立たないことを意味します。パラメータリストとしての void は、関数がパラメータを受け入れないことを意味します
関数プロトタイプでは、$... などを意味します。関数が任意の数のパラメーターを受け入れることができる場合は、この変数名を使用します。
$foo = "0"; // $foo は文字列 (ASCII 48)
$foo += 2; // $foo は整数 (2) になります
$foo = $foo + 1.3; // $foo は浮動小数点 (3.3) になります
$foo = 5 + "10 匹の子豚" // $foo は整数 (15)
$foo = 5 + "10 匹の子豚"; ; // $foo は整数 (15)
$a = 'car' // $a は文字列
$a[0] = 'b'; / $a はまだ文字列ですecho $a; // bar
?>
とよく似ています。あなたが望む場所変換する変数の前に、かっこで囲まれたターゲットの型が続きます。
$foo = 10; // $foo は整数
$bar = (boolean) $foo; // $bar はブール値
?> ;
(int), (integer) - 整数に変換されます
(bool), (boolean) - boolean に変換されます
(浮動小数点)、( double)、(real) - float に変換 float
$foo = (int) $bar; ( int ) $bar;
?>
$binary = (binary )$string; b」バイナリ文字列";
?>
$foo = 10; // $foo は整数です
$str = "$foo"; // $str は文字列です
$fst = (string) $foo; // $fst も文字列です
// 出力は「同じです」
if ($fst === $str) {
echo "それらは同じ";}
?>
定数と変数の違いは次のとおりです。
注: このメソッドはコンパイル時に定義されるため、define() を使用して定数を定義するのとは異なり、const キーワードを使用して定数を定義する場合は、最上位のスコープになければなりません。つまり、const を使用して関数、ループ、if ステートメント内で定数を定義することはできません。
PHP は、実行するスクリプトに多数の事前定義された定数を提供します。ただし、多くの定数はさまざまな拡張ライブラリによって定義されており、これらの拡張ライブラリが動的にロードされるか、コンパイル時に組み込まれる場合にのみ表示されます。
コード内の位置に応じて値が変化する魔法の定数が 8 つあります。たとえば、
__LINE__ の値は、スクリプト内のどの行にあるかによって異なります。これらの特殊な定数は、次のように大文字と小文字が区別されません。
いくつかの PHP "マジック定数"__LINE__ | ファイル内の現在の行番号。|
__FILE__ | ファイルの完全なパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、__FILE__ には常に絶対パス (またはシンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。 |
__DIR__ | ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能) =|
__FUNCTION__ | 関数名 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたとおりの関数名を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。|
__CLASS__ | クラスの名前 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。クラス名には、それが宣言されているスコープが含まれます (例: FooBar)。 PHP 5.4 以降、__CLASS__ はトレイトに対しても機能することに注意してください。特性メソッド内で使用される場合、__CLASS__ は特性メソッドを呼び出すクラスの名前になります。|
__TRAIT__ | トレイト名 (PHP 5.4.0 の新機能)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。トレイト名には、それが宣言されるスコープが含まれます (例: FooBar)。|
__METHOD__ | クラスのメソッド名 (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。|
__NAMESPACE__ | 現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)。