ホームページ  >  記事  >  バックエンド開発  >  phpデータ型の例の詳細な説明

phpデータ型の例の詳細な説明

小云云
小云云オリジナル
2018-03-15 13:13:181419ブラウズ

PHP は 8 つのプリミティブ データ型をサポートします。 4 つのスカラー型: ブール (Boolean)、整数 (integer)、float (浮動小数点型、double とも呼ばれる)、文字列 (string)、2 つの複合型: 配列 (array)、オブジェクト (object)、そして最後に 2 つの特別な型があります。タイプ: resource (リソース) および NULL (タイプなし)。

注: 式の値と型を確認したい場合は、var_dump() 関数を使用します。デバッグ用に人間が判読できる型の表現が必要なだけの場合は、gettype() 関数を使用します。型を確認するには、gettype() を使用せず、is_type 関数を使用します。

PHP は弱い言語なので、== 記号を使用する場合、数値と文字列を比較する場合、または数値の内容を含む文字列を比較する場合、文字列は数値に変換されます。値と比較は数値的に実行されます。このルールは switch ステートメントにも適用されます。 (絶対比較には === を使用してください)

整数型文字列を浮動小数点型に変換すると整数型も変換されます。浮動小数点型に変換されます文字列文字列は浮動小数点型に変換されます

第一オペランドの型

第二オペランドの型

型変換

Integer

Floアットポイントタイプ

整数を浮動小数点型に変換

浮動小数点型

まとめると、 浮動小数点型 > 整数型 > 文字列 > ブール型

  1. ブール型

    ブール型に変換すると、次の値は FALSE とみなされます:

    他の値はすべて TRUE とみなされます (あらゆるリソースを含みます)。

  • ブール値FALSE自体

  • 整数値0(ゼロ)

  • 浮動小数点値0.0(ゼロ)

  • 空の文字列と文字列「0」

  • 配列要素は含まれません

  • メンバー変数を含まないオブジェクト (PHP 4.0 にのみ適用可能)

  • 特殊な型 NULL (値が割り当てられていない変数を含む)

  • SimpleXML空のタグから生成されたオブジェクト

  • 整数型

    • 整数オーバーフロー: 指定された数値が整数の範囲を超える場合、浮動小数点として解釈されます。同様に、演算結果が整数の範囲を超える場合は浮動小数点数が返されます。

    • PHP には (Java とは異なり) 整数の除算用の演算子がありません。 1/2 は float0.5 になります。値は、小数部分を破棄して整数にキャストすることも、より適切に丸めるためにround()関数を使用することもできます。

      <?php
      var_dump(25/7);         // float(3.5714285714286) 
      var_dump((int) (25/7)); // int(3)
      var_dump(round(25/7));  // float(4) 
      ?>
    • 浮動小数点数から整数に変換する場合、切り捨てとなります。

    • 警告

      未知の分数を整数にキャストしないでください。予測できない結果が生じる可能性があります。

      <?php
      echo (int) ( (0.1+0.7) * 10 ); // 显示 7!
      ?>
  • Float型

  • <?php
    $a = 0.1;
    $b = 0.9;
    $c = 1;
    var_dump(($a+$b)==$c);//true
    var_dump(($c-$b)==$a);//falseprintf("%.20f", $a+$b); // 1.00000000000000000000
    printf("%.20f", $c-$b); // 0.09999999999999997780?>

    この問題は、浮動小数点の計算には精度が伴い、浮動小数点数を2進数に変換すると精度が失われる可能性があるために発生します。

  • したがって、浮動小数点数が最後の桁まで正確であるとは絶対に信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。

  • 本当により高い精度が必要な場合は、任意精度の数学関数を使用する必要があります。

  • 高精度运算的方法如下:
    bcadd 将两个高精度数字相加
    bccomp 比较两个高精度数字,返回-1,0,1
    bcp 将两个高精度数字相除
    bcmod 求高精度数字余数
    bcmul 将两个高精度数字相乘
    bcpow 求高精度数字乘方
    bcpowmod 求高精度数字乘方求模
    bcscale 配置默认小数点位数,相当于Linux bc中的”scale=”
    bcsqrt 求高精度数字平方根
    bcsub 将两个高精度数字相减
  • 上記の警告メッセージにあるように、2 つの浮動小数点数が等しいかどうかを比較することには、内部式のため問題があります。ただし、浮動小数点値を比較する回りくどい方法があります。

    浮動小数点数が等しいかどうかをテストするには、その値よりほんの少しだけ大きい最小誤差値を使用します。この値は、マシン イプシロンまたは最小単位整数とも呼ばれ、計算で受け入れられる最小の差の値です。

    と小数点以下 5 桁の精度に相当します。

    <?php
    $a = 1.23456789;
    $b = 1.23456780;
    $epsilon = 0.00001;
    if(abs($a-$b) < $epsilon) {
        echo "true";
    }
    ?>
  • 文字列型

  • 文字列が二重引用符 (") で囲まれている場合、PHP はいくつかの特殊文字を解析します: n、\、$

  • 二重引用符で定義された文字 最も重要な機能

  • 文字列はキーに関連付けられた型で連結されます。

    array() 言語構造を使用して、任意の数の key => を作成できます。カンマで区切られた値のペア。
  • array(  key =>  value , ...
             )
        // 键(key)可是是一个整数 integer 或字符串 string
        // 值(value)可以是任意类型的值
        此外 key 会有如下的强制转换:
            <?php
            $arr = array(5 => 1, 12 => 2);
            $arr[] = 56;    // This is the same as $arr[13] =56; at this point of the script
            $arr["x"] = 42; // This adds a new element to the array with key "x"                
            unset($arr[5]); // This removes the element fromthe array
            unset($arr);    // This deletes the whole array

  • には、正当な整数値を含む文字列が含まれます。たとえば、キー名「8」は実際には 8 として格納されます。ただし、「08」は整数に変換されます。有効な 10 進値ではないためキャストされません。浮動小数点数も整数に変換されます。つまり、キー名 8.7 は実際には 8 として格納されます。また、整数型に変換され、キー名 false は 0 として格納されます。

  • Null は空の文字列に変換されます。つまり、キー名 null は実際には次のように格納されます。 「」。配列とオブジェクトをキー名として使用できません。これを行うと、「無効なオフセット タイプ」という警告が表示されます。同じキー名が複数のセルで使用される場合は、最後のキー名のみが使用されます。
    • PHP は実際にはインデックス付き配列と連想配列を区別しないため、PHP 配列には整数キー名と文字列キー名の両方を含めることができます

    • 如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。

    •  如果指定的键名已经有了值,则该值会被覆盖。

    • 要删除某键值对,对其调用 unset() 函数。unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。如果需要删除后重建索引,可以用 array_values() 函数。

  • foreach 控制结构是专门用于数组的。它提供了一个简单的方法来遍历数组。

  • 数组(Array) 的赋值总是会涉及到值的拷贝。使用引用运算符通过引用来拷贝数组。   

  •  <?php
            $arr1 = array(2, 3);
            $arr2 = $arr1;
            $arr2[] = 4; // $arr2 is changed,// $arr1 is still array(2, 3)       
            $arr3 = &$arr1;
            $arr3[] = 4; // now $arr1 and $arr3 are the same
        ?>
  • NULL
        特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。
        在下列情况下一个变量被认为是 NULL:
            1. 被赋值为 NULL。2. 尚未被赋值。3. 被 unset()。
        转换到 NULL :使用 (unset) $var 将一个变量转换为 null 将不会删除该变量或 unset 其值。仅是返回 NULL 值而已。

  • 相关推荐:

    PHP数据类型转换的转换

    解析PHP数据类型之对象(Object)

    PHP数据类型之字符串类型

    PHP数据类型之布尔型变量详解

    php数据类型

    以上がphpデータ型の例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。