PHPの基本チュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:29:061639ブラウズ

PHP は、動的でインタラクティブなサイトを作成するための強力なサーバーサイド スクリプト言語です。

PHP ハイパーテキスト プリプロセッサ

PHP ファイルとは何ですか?

  • PHPファイルにはテキスト、HTML、CSS、PHPコードを含めることができます
  • PHPコードはサーバー上で実行され、結果はプレーンテキストでブラウザに返されます
  • PHPファイルのサフィックスは「.php」です
  • PHPでは何ができるのでしょうか?

  • PHPは動的なページコンテンツを生成できます
  • PHPはサーバー上のファイルを作成、開き、読み取り、書き込み、削除、閉じることができます
  • PHPはフォームデータを受信できます
  • PHPはCookieを送信および取得できます
  • PHPは追加、削除、データベース内のデータを変更する
  • PHP は、ユーザーが Web サイト内の特定のページにアクセスすることを制限できます
  • PHP はデータを暗号化できます
  • PHP では、HTML のみを出力することに限定されません。画像、PDF ファイル、さらには Flash ムービーをエクスポートすることもできます。 XHTML や XML などのテキストを出力することもできます。

    基本的な PHP 構文

    PHP スクリプトはドキュメント内のどこにでも配置できます。

    PHP スクリプトは 94eb1432e5d6ea3084644f5fd5073012 で終わります:

    <?php// 此处是 PHP 代码?>

    PHP ファイルのデフォルトのファイル拡張子は「.php」です。

    PHP ファイルには通常、HTML タグといくつかの PHP スクリプト コードが含まれています。

    PHP は 3 種類のコメントをサポートしています:

    <?php// 这是单行注释# 这也是单行注释/*这是多行注释块它横跨了多行*/?>
    PHP では、すべてのユーザー定義関数、クラス、キーワード (if、else、echo など) は大文字と小文字が区別されません。

    ただし、PHP では、すべての変数で大文字と小文字が区別されます。

    変数は情報を保存するコンテナです

    PHP変数のルール:

  • 変数は$記号で始まり、その後に変数名が続きます
  • 変数名は文字またはアンダースコアで始まる必要があります
  • 変数名を始めることはできません数字を使用します
  • 変数名には英数字とアンダースコア (A-z、0-9、_) のみを含めることができます
  • 変数名は大文字と小文字が区別されます ($y と $Y は 2 つの異なる変数です)
  • PHP は大まかに型付き言語 言語

    PHP には 3 つの異なる変数スコープがあります:

  • local (ローカル)
  • global (グローバル)
  • static (静的)
  • PHP static キーワード

    通常、関数が完了/実行されるとき、すべての変数を削除します。ただし、ローカル変数を削除したくない場合もあります。これを達成するにはさらなる作業が必要です。

    これを実現するには、最初に変数を宣言するときに static キーワードを使用します

    PHP には、echo と print という 2 つの基本的な出力メソッドがあります。

    echo と print の違い:

  • echo - 複数の文字列を出力できます
  • print - 1 つの文字列のみを出力でき、常に 1 を返します
  • ヒント: 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 var_dump() は、変数

    <?php $cars=array("Volvo","BMW","SAAB");var_dump($cars);?>
    のデータ型と値を返します。 演算結果: array(3) { [0]=> string(5) "Volvo" [1]= > string(3) "BMW" [2]=> string(4) "SAAB" }

    PHP NULL 値

    特別な NULL 値は、変数に値がないことを意味します。データ型 NULL に指定できる値は NULL のみです。

    NULL 値は、変数が空かどうかを示します。空の文字列と null 値のデータベースを区別するためにも使用されます。

    値を NULL に設定することで変数をクリアできます

    定数は変数に似ていますが、一度定義すると、変更したり未定義にしたりすることはできません。


    有効な定数名は文字またはアンダースコアで始まります (定数名の前に $ 記号はありません)。変数とは異なり、定数はスクリプト全体にわたって自動的にグローバルになります。


    PHP 定数を設定する

    定数を設定するには、define() 関数を使用します。これには 3 つのパラメータが必要です:

      最初のパラメータは定数の名前を定義します
    1. 2 番目のパラメータは定数の値を定義します
    2. Can 選択された 3 番目のパラメーターは、定数名の大文字と小文字を区別するかどうかを指定します。デフォルトは false です。
    「W3School.com.cn へようこそ!」という値を持つ大文字と小文字を区別する定数を作成します:


    <?phpdefine("GREETING", "Welcome to W3School.com.cn!", true);echo greeting;?>

    PHP 算数运算符

    <?php $x=10; $y=6;echo ($x + $y); // 输出 16echo ($x - $y); // 输出 4echo ($x * $y); // 输出 60echo ($x / $y); // 输出 1.6666666666667echo ($x % $y); // 输出 4?>

    PHP 字符串运算符

    运算符 名称 例子 结果
    . 串接 $txt1 = "Hello" $txt2 = $txt1 . " world!" 现在 $txt2 包含 "Hello world!"
    .= 串接赋值 $txt1 = "Hello" $txt1 .= " world!" 现在 $txt1 包含 "Hello world!"

    PHP 递增/递减运算符

    运算符 名称 描述
    ++$x 前递增 $x 加一递增,然后返回 $x
    $x++ 后递增 返回 $x,然后 $x 加一递增
    --$x 前递减 $x 减一递减,然后返回 $x
    $x-- 后递减 返回 $x,然后 $x 减一递减

    PHP 比较运算符

    PHP 比较运算符用于比较两个值(数字或字符串):

    运算符 名称 例子 结果
    == 等于 $x == $y 如果 $x 等于 $y,则返回 true。
    === 全等(完全相同) $x === $y 如果 $x 等于 $y,且它们类型相同,则返回 true。
    != 不等于 $x != $y 如果 $x 不等于 $y,则返回 true。
    a8093152e673feb7aba1828c43532094 不等于 $x a8093152e673feb7aba1828c43532094 $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等(完全不同) $x !== $y 如果 $x 不等于 $y,且它们类型不相同,则返回 true。
    > 大于 $x > $y 如果 $x 大于 $y,则返回 true。
    2bfa79a765a918fabee4af854dc6f79f= 大于或等于 $x >= $y 如果 $x 大于或者等于 $y,则返回 true.
    <= 小于或等于 $x <= $y 如果 $x 小于或者等于 $y,则返回 true。

    PHP 逻辑运算符

    运算符 名称 例子 结果
    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 配列演算子

    PHP 配列演算子は配列を比較するために使用されます:

    演算子名 結果の例
    + Union $x + $y $x と $y の和集合 (重複をオーバーライドしない)キー)
    == Equal $x == $y $x と $y が同じキーと値のペアを持つ場合、true を返します。
    === Congruent $x === $y $x と $y が同じ順序と型の同じキー/値ペアを持つ場合に true を返します。
    != 等しくない $x != $y $x が $y と等しくない場合に true を返します。
    a8093152e673feb7aba1828c43532094 不等 $x a8093152e673feb7aba1828c43532094 $y $x が $y と等しくない場合に true を返します。
    !== 合同ではありません $x !== $y $x が $y と完全に異なる場合に true を返します。

    在 PHP 中,我们可以使用以下条件语句:

  • if 语句 - 如果指定条件为真,则执行代码
  • if...else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
  • if...elseif....else 语句 - 选择若干段代码块之一来执行
  • switch 语句 - 语句多个代码块之一来执行
  • 在 PHP 中,我们有以下循环语句:

  • while - 只要指定条件为真,则循环代码块
  • do...while - 先执行一次代码块,然后只要指定条件为真则重复循环
  • for - 循环代码块指定次数
  • foreach - 遍历数组中的每个元素并循环代码块
  • PHP foreach 循环

    foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。

    <?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) {  echo "$value <br>";}?>
    PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。

    页面加载时函数不会立即执行。

    函数只有在被调用时才会执行。

    PHP 默认参数值

    <?phpfunction setHeight($minheight=50) {  echo "The height is : $minheight <br>";}setHeight(350);setHeight(); // 将使用默认值 50setHeight(135);setHeight(80);?>

     

    在 PHP 中创建数组

    在 PHP 中, array() 函数用于创建数组:

    array();

    在 PHP 中,有三种数组类型:

  • 索引数组 - 带有数字索引的数组
  • 关联数组 - 带有指定键的数组
  • 多维数组 - 包含一个或多个数组的数组
  • 索引是自动分配的(索引从 0 开始):

    $cars=array("Volvo","BMW","SAAB");或者:$cars[0]="Volvo";$cars[1]="BMW";$cars[2]="SAAB";

    获得数组的长度 - count() 函数

    count() 函数用于返回数组的长度(元素数)

    遍历索引数组

    <?php$cars=array("Volvo","BMW","SAAB");$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) {  echo $cars[$x];  echo "<br>";}?>

    PHP 关联数组

    关联数组是使用您分配给数组的指定键的数组。

    $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 - 数组的排序函数

  • sort() - 以升序对数组排序
  • rsort() - 以降序对数组排序
  • asort() - 根据值,以升序对关联数组进行排序
  • ksort() - 根据键,以升序对关联数组进行排序
  • arsort() - 根据值,以降序对关联数组进行排序
  • krsort() - 根据键,以降序对关联数组进行排序
  • PHP 全局变量 - 超全局变量

    PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

    这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION
  • $GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。

    PHP $_SERVER

    $_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

    PHP $_REQUEST 用于收集 HTML 表单提交的数据。

    PHP $_POST

    PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

    PHP $_GET

    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 つのスカラー型:

  • boolean (ブール)
  • integer (整数)
  • float (float、double とも呼ばれます)
  • string (string)
  • 2 つの複合型:

    array (配列)
  • オブジェクト ( object)
  • 最後に、2 つの特別な型があります:

    resource (リソース)
  • NULL (型なし)
  • コードの読みやすさを確保するために、このマニュアルではいくつかの疑似型も導入しています:

    mixed (mixed) type)
  • number (数値型)
  • callback (コールバック型)
  • と擬似変数 $....

    : 式の値と型を確認したい場合は、var_dump() 関数を使用します。

    デバッグ用に読みやすい型式を取得したいだけの場合は、gettype() 関数を使用します。型を表示するには、gettype() を使用せず、 is_type 関数を使用します

    a92f962848b4537391d6f3a7093dc06e





    警告

    予期しない結果が生じる可能性があるため、未知の小数を整数にキャストしないでください。

    180995bf21f71966d2881274b493ae51



    正確なわかりました 最後に、2 つの浮動小数点数が等しいかどうかを比較しないでください。本当にさらに精度が必要な場合。

    浮動小数点数を比較する回りくどい方法:

    b3846f11e59a4bf3255cd39fb877baa7

    Note:试图访问一个未定义的数组键名与访问任何未定义变量一样:会导致 E_NOTICE 级别错误信息,其结果为 NULL

    要修改某个值,通过其键名给该单元赋一个新值。要删除某键值对,对其调用 unset() 函数。

    f1703f71c0ad6e697a0d5a095c5c5165 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
    ?>

    例子:

    8c98de5f0d67be93d1627a59b46a6590 $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() 函数。

    dd1ea59dc744ada562d1bdc63ea7ebcd '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 という名前のメンバー変数に値が含まれます。

    1c24500a1623ce01ae856c659bf7f53c

    とよく似ています。あなたが望む場所変換する変数の前に、かっこで囲まれたターゲットの型が続きます。

    868d79b0e1694e575e5ab47ae3a77943




    文字列リテラルと変数をバイナリ文字列に変換します:

    ae91ea647806a42ef24d4bd0119ec3e6




    変数を文字列に変換する代わりに、変数を二重引用符で囲むことができます: < ;?php

    $foo = 10; // $foo は整数です

    $str = "$foo"; // $str は文字列です

    $fst = (string) $foo; // $fst も文字列です

    // 出力は「同じです」

    if ($fst === $str) {

    echo "それらは同じ";

    }
    ?>






    定数にはスカラー データ (ブール値、整数、浮動小数点数、文字列) のみが含まれます)。リソース定数を定義できますが、予期しない結果を引き起こす可能性があるため、避けてください。

    定数と変数の違いは次のとおりです。

  • 定数の前にドル記号 ($) はありません
  • 定数は、代入ステートメントではなく、define() 関数を使用してのみ定義できます。 ;
  • 定数は変数のスコープを無視でき、どこでも定義およびアクセスできます。
  • 一度定義した定数は再定義または未定義にすることはできません
  • 定数の値はスカラーのみです。
  • 注: このメソッドはコンパイル時に定義されるため、define() を使用して定数を定義するのとは異なり、const キーワードを使用して定数を定義する場合は、最上位のスコープになければなりません。つまり、const を使用して関数、ループ、if ステートメント内で定数を定義することはできません。

    PHP は、実行するスクリプトに多数の事前定義された定数を提供します。ただし、多くの定数はさまざまな拡張ライブラリによって定義されており、これらの拡張ライブラリが動的にロードされるか、コンパイル時に組み込まれる場合にのみ表示されます。

    コード内の位置に応じて値が変化する魔法の定数が 8 つあります。たとえば、

    __LINE__ の値は、スクリプト内のどの行にあるかによって異なります。これらの特殊な定数は、次のように大文字と小文字が区別されません。

    いくつかの PHP "マジック定数" 名前 説明 ファイル内の現在の行番号。 ファイルの完全なパスとファイル名。インクルードされたファイル内で使用された場合、インクルードされたファイルの名前を返します。 PHP 4.0.2 以降、 ファイルが配置されているディレクトリ。インクルードされたファイル内で使用された場合、インクルードされたファイルが配置されているディレクトリを返します。これは dirname(__FILE__) と同等です。ルート ディレクトリでない限り、ディレクトリ名には末尾のスラッシュは含まれません。 (PHP 5.3.0 の新機能) = 関数名 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたとおりの関数名を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。 クラスの名前 (PHP 4.3.0 の新機能)。 PHP 5 以降、この定数は定義されたときのクラスの名前を返します (大文字と小文字は区別されます)。 PHP 4 では、この値は常に小文字です。クラス名には、それが宣言されているスコープが含まれます (例: FooBar)。 PHP 5.4 以降、__CLASS__ はトレイトに対しても機能することに注意してください。特性メソッド内で使用される場合、__CLASS__ は特性メソッドを呼び出すクラスの名前になります。 トレイト名 (PHP 5.4.0 の新機能)。 PHP 5.4 以降、この定数は定義されたとおりの特性の名前を返します (大文字と小文字が区別されます)。トレイト名には、それが宣言されるスコープが含まれます (例: FooBar)。 クラスのメソッド名 (PHP 5.0.0 で新しく追加されました)。定義されたとおりのメソッド名を返します (大文字と小文字が区別されます)。 現在のネームスペースの名前 (大文字と小文字が区別されます)。この定数はコンパイル時に定義されます (PHP 5.3.0 の新機能)。

    PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

    对象赋值

    79f15ad5ddde74d89881903a744ed331var = '$assigned will have this value';
    $instance = null; // $instance and $reference become null
    var_dump($instance);
    var_dump($reference);
    var_dump($assigned);
    ?>

    运行结果:

    NULLNULLobject(SimpleClass)#1 (1) {   ["var"]=>     string(30) "$assigned will have this value"}

    创建新对象

    16b80b9ee2cdffb19250651a304be25e

    以上例程会输出:

    bool(true)bool(true)bool(true)

    使用 ClassName::class 你可以获取一个字符串,包含了类 ClassName 的完全限定名称。

    51c99ce9f5e78241fab0b8bae6528550

    以上例程会输出:

    NS\ClassName

    在类的成员方法里面,可以用 ->(对象运算符):$this->property(其中 property 是该属性名)这种方式来访问非静态属性。静态属性则是用 ::(双冒号):self::$property来访问。

    定义和使用一个类常量

    d1a3fe78146ce3e43424f088dd6bc32d

    自動追加ダウンロード例

    それぞれ MyClass1.php と MyClass2.php のファイルに MyClass1 と MyClass2 のクラスを追加します。 ?php

    function __autoload($class_name) {

    require_once $class_name 。 '.php'; }

    $obj = 新しい MyClass1();

    $obj2 = 新しい MyClass2();
    ?>



    構造関数を持つタイプは、新しいオブジェクトを作成するたびにこの方法を使用するため、オブジェクトを使用する前のいくつかの初期化作業に非常に適しています。

    __LINE__
    __FILE__ __FILE__ には常に絶対パス (またはシンボリック リンクの場合は解決された絶対パス) が含まれますが、それより前のバージョンには相対パスが含まれる場合がありました。
    __DIR__
    __FUNCTION__
    __CLASS__
    __TRAIT__
    __METHOD__
    __NAMESPACE__
    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。