Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Beispiele für PHP-Datentypen

Detaillierte Erläuterung der Beispiele für PHP-Datentypen

小云云
小云云Original
2018-03-15 13:13:181411Durchsuche

PHP unterstützt 8 primitive Datentypen. Vier Skalartypen: Boolean (Boolean), Integer (Integer), Float (Gleitkommatyp, auch Double genannt), String (String), zwei zusammengesetzte Typen: Array (Array), Object (Objekt) und schließlich Es gibt zwei spezielle Typen Typen: Ressource (Ressource) und NULL (kein Typ).

Hinweis: Wenn Sie den Wert und Typ eines Ausdrucks überprüfen möchten, verwenden Sie die Funktion var_dump(). Wenn Sie zum Debuggen nur eine für Menschen lesbare Darstellung des Typs benötigen, verwenden Sie die Funktion gettype(). Um einen Typ zu überprüfen, verwenden Sie nicht gettype(), sondern die Funktion is_type.

PHP ist eine schwache Sprache und wird entsprechend der Programmlaufumgebung automatisch konvertiert. Wenn Sie das ==-Zeichen verwenden und eine Zahl und eine Zeichenfolge vergleichen oder eine Zeichenfolge mit numerischem Inhalt vergleichen, wird die Zeichenfolge angezeigt in numerische Werte umgewandelt und Vergleiche werden numerisch durchgeführt. Diese Regel gilt auch für switch-Anweisungen. (Bitte verwenden Sie === für den absoluten Vergleich)

String

第一个操作数类型

第二个操作数类型

类型转换

整型

浮点型

整型转换为浮点型

整型

字符串

字符串转换为数字,如果字符串转换后是浮点型,整型也会转换为浮点型

浮点型

字符串

字符串转换为浮点型

Erster Operand Typ
Zweiter Operandentyp Typkonvertierung
Ganzzahltyp Gleitkommatyp td> Ganzzahltyp in Gleitkommatyp konvertiert
Ganzzahltyp String in Zahl konvertieren, wenn der String in konvertiert wird ein Gleitkommatyp, der Ganzzahltyp wird auch in einen Gleitkommatyp konvertiert
Gleitkommatyp String String in Gleitkomma konvertieren

Zusammenfassend: Gleitkommatyp> Integer-Typ> String>Boolescher Typ

  1. Boolescher Typ

    Bei der Konvertierung in einen Booleschen Wert werden die folgenden Werte als FALSCH betrachtet :

    Alle anderen Werte gelten als WAHR (einschließlich aller Ressourcen).

  • Boolescher Wert FALSE selbst

  • Ganzzahliger Wert 0 (Null)

  • Gleitend Punktwert 0,0 (Null)

  • Die leere Zeichenfolge und die Zeichenfolge „0“

  • Ein Array, das keine Elemente enthält

  • Ein Objekt, das keine Mitgliedsvariablen enthält (gilt nur für PHP 4.0)

  • Sondertyp NULL (einschließlich Variablen, denen kein Wert zugewiesen wurde)

  • SimpleXML-Objekt generiert aus leeren Tags

  • Ganzzahltyp

    • Ganzzahl Überlauf: Wenn eine bestimmte Zahl außerhalb des Ganzzahlbereichs liegt, wird sie als Gleitkommazahl interpretiert. Wenn das Ergebnis der Operation den Bereich einer Ganzzahl überschreitet, wird ebenfalls Float zurückgegeben.

    • In PHP gibt es keinen ganzzahligen Divisionsoperator (im Gegensatz zu Java). 1/2 ergibt Float0,5. Der Wert kann in eine ganze Zahl umgewandelt werden, wobei der Bruchteil verworfen wird, oder zur besseren Rundung kann die Funktion „round()“ verwendet werden.

      <?php
      var_dump(25/7);         // float(3.5714285714286) 
      var_dump((int) (25/7)); // int(3)
      var_dump(round(25/7));  // float(4) 
      ?>
    • Bei der Konvertierung von einer Gleitkommazahl in eine Ganzzahl wird diese abgerundet.

    • Warnung

      Wechseln Sie niemals einen unbekannten Bruch in eine ganze Zahl um, da dies manchmal zu unvorhersehbaren Ergebnissen führen kann.

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

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

    Dieses Problem tritt auf, weil die Gleitkommaberechnung Präzision erfordert konvertiert Wenn es binär ist, kann die Genauigkeit verloren gehen.

  • Glauben Sie also niemals, dass eine Gleitkommazahl bis zur letzten Ziffer genau ist, und vergleichen Sie niemals zwei Gleitkommazahlen auf Gleichheit.

  • Wenn Sie wirklich eine höhere Präzision benötigen, sollten Sie mathematische Funktionen mit beliebiger Präzision verwenden.

  • 高精度运算的方法如下:
    bcadd 将两个高精度数字相加
    bccomp 比较两个高精度数字,返回-1,0,1
    bcp 将两个高精度数字相除
    bcmod 求高精度数字余数
    bcmul 将两个高精度数字相乘
    bcpow 求高精度数字乘方
    bcpowmod 求高精度数字乘方求模
    bcscale 配置默认小数点位数,相当于Linux bc中的”scale=”
    bcsqrt 求高精度数字平方根
    bcsub 将两个高精度数字相减
  • Wie die obige Warnmeldung besagt, ist der Vergleich zweier Gleitkommazahlen auf Gleichheit aufgrund interner Ausdrücke problematisch. Es gibt jedoch Umwege, Gleitkommawerte zu vergleichen.

    Um Gleitkommazahlen auf Gleichheit zu testen, verwenden Sie einen minimalen Fehlerwert, der nur einen Punkt größer als dieser Wert ist. Dieser Wert, auch Maschinen-Epsilon oder kleinste Ganzzahleinheit genannt, ist der kleinste Differenzwert, der in der Berechnung akzeptiert werden kann.

    und entsprechen einer Genauigkeit von fünf Dezimalstellen.

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

  • Wenn die Zeichenfolge in doppelte Anführungszeichen (") eingeschlossen ist, führt PHP einige Sonderzeichenmanipulationen durch. Analyse: wie n, \, $

  • Das wichtigste Merkmal einer mit doppelten Anführungszeichen definierten Zeichenfolge ist, dass die Variable durch

  • Zeichen. Das Array vom Typ PHP ist eigentlich eine Möglichkeit, Werte zu konvertieren.

    Sie können das Sprachkonstrukt „array()“ verwenden um ein neues Array zu erstellen. Es werden beliebig viele durch Kommas getrennte Schlüssel => Wertepaare >

  • akzeptiert Beispielsweise wird der Schlüsselname „8“ tatsächlich als 8 gespeichert. Es erfolgt keine Umwandlung, da es sich nicht um einen zulässigen Dezimalwert handelt.

  • Die Gleitkommazahl wird ebenfalls in einen umgewandelt Ganzzahl, was bedeutet, dass der Dezimalteil gerundet wird. Beispielsweise wird der Schlüsselname 8,7 tatsächlich als 8 gespeichert.

  • 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
    Der boolesche Wert wird ebenfalls in einen umgewandelt Ganzzahl, das heißt, der Schlüsselname true wird als 1 und der Schlüsselname false wird als 0 gespeichert. 🎜>
    • Null wird in eine leere Zeichenfolge, also den Schlüssel, umgewandelt name null wird tatsächlich als „“ gespeichert. Arrays und Objekte können nicht als Schlüsselname verwendet werden:

    • Wenn derselbe Schlüsselname für mehrere Zellen in der Array-Definition verwendet wird, wird nur die letzte verwendet.

    • PHP-Arrays können beide Ganzzahlen enthalten und String-Schlüsselnamen, da PHP eigentlich nicht zwischen indizierten Arrays und assoziativen Arrays unterscheidet.
    • 如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。

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

    • 要删除某键值对,对其调用 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数据类型

    Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Beispiele für PHP-Datentypen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn