0
点赞
收藏
分享

微信扫一扫

数据类型(一)

郝春妮 2023-02-16 阅读 92


PHP 支持 8 种原始数据类型。

四种标量类型:

  • boolean(布尔型)
  • integer(整型)
  • float(浮点型,也称作 double)
  • string(字符串)
    两种复合类型:
  • array(数组)
  • object(对象)
    最后是两种特殊类型:
  • resource(资源)
  • NULL(无类型)

类型检测

  • var_dump() 函数可以查看表达式的值和类型
  • gettype() 函数用于检测变量类型
  • is_ 加类型,如 is_int(),is_array() 等,判断变量是否为该类型

在目录 /home/project 创建 test.php,并编辑内容

<?php
$a = TRUE;
$b = "foo";
$c = 0.1;
$d = 12;

if (is_string($b)) {
echo "$b 是字符串".PHP_EOL;
}

if (is_int($c)) {
echo "$c 是整型".PHP_EOL;
}

var_dump($a);
var_dump($b);
echo gettype($c).PHP_EOL;
echo gettype($d);

执行
结果输出

foo 是字符串
bool(true)
string(3) "foo"
double
integer

Boolean 布尔类型

布尔类型表达了真值,可以为 TRUE 或 FALSE,不区分大小写。

<?php

$a = True;
$b = False;

var_dump($a);// bool(true)
var_dump($b);// bool(false)

运算符返回 boolean 类型的结果:

<?php

// == 是一个操作符,它检测两个变量值是否相等,并返回一个布尔值
if ($a == "say_hello") {
echo "Hello World";
}
// $b 的值是否为 true:
if ($res) {
echo "This is true";
}

注意当下列情况转换为 Boolean 时,其值为 FALSE

  • 布尔值 FALSE 本身
  • 整型值 0(零)
  • 浮点型值 0.0(零)
  • 空字符串,以及字符串 “0”
  • 不包括任何元素的数组
  • 特殊类型 NULL(包括尚未赋值的变量)
  • 从空标记生成的 SimpleXML 对象
    在目录 /home/project 编辑 test.php

<?php

$a = '';
$b = 0;
$c = false;
$d = "0";

var_dump($a == $b);
var_dump($b == $d);
var_dump($a == $c);
var_dump($b == $c);

执行

Integer 整型

整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。

注意:要使用八进制表达,数字前必须加上 0。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。

<?php

$a = 1234; // 十进制数
$b = -123; // 负数
$c = 0123; // 八进制数 (等于十进制 83)
$d = 0x1A; // 十六进制数 (等于十进制 26)

整数溢出
如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。

在目录 /home/project 编辑 test.php

<?php

$a = 123445566;
$b = 9223372036854775807;
$c = 9223372036854775808;
$d = 50000000000000 * 1000000;

var_dump($a);
var_dump($b);
var_dump($c);
var_dump($d);

执行

Float 浮点型

浮点型(也叫浮点数 float,双精度数 double 或实数 real)

<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;

浮点数的字长和平台相关,通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)

String 字符串类型

一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节,PHP 中有 4 中表达方式

  • 单引号
    单引号内特殊字符和变量不会被解析

<?php
$a = 'Hello';
echo '$a \n World';//$a \n World

  • 双引号
    双引号内的特殊字符和变量会被解析。

<?php
$a = 'Hello';
/**
* Hello
* World
*/
echo "$a \n World";

  • Heredoc
    Heredoc 类似与双引号,内部转义字符和变量可以被解析,句法结构为

<<<EOT

字符串

EOT;

其中 EOT 为标识符,可以自定义,但是首尾标识符必须相同。开始标识符 EOT 后需换行,结束标识符 EOT 必须独占一行,且前面不许有空格。

<?php
$a ='Hello' ;
echo <<<EOT
$a Hello
EOT;

字符串函数

  • strlen()函数的作用是:返回字符串的长度。
  • strwordcount()函数的作用是:返回字符串中的字数
  • strrev()函数的作用是:反转字符串
  • strpos()函数的作用是:搜索字符串中的文本
  • str_replace()函数的作用是:替换字符串中的文本

Nowdoc
Nowdoc 类似于单引号,无法解析转移字符和变量。句法结构类似 Heredoc,但是需要在开始标识符加上单引号。

<?php
$a ='Hello' ;
echo <<<'EOD'//和 Heredoc 不同点
$a Hello
EOD;

编辑 test.php

<?php

$a = 'Hello';
$b = '$a World';
$c = "ShiYanLou";

$c = <<<EOT
$a \n World
EOT;

$d = <<<'EOT'
$a \n $c
EOT;

var_dump($b);
var_dump($c);
var_dump($d);

执行 php test.php


举报

相关推荐

0 条评论