PHP开发基础教程之数据类型

概括:

PHP 的数据类型有8种,分别为:String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值), resource(资源)。下面逐一介绍:


一、PHP 字符串

字符串就是一段字符,更通俗的来讲就是一段话,这段话可以很长,也可以很短。

1.在PHP里面中有三种声明字符串的方式

  • 用单引号声明

用英文半角状态下的单引号来把字符串包围起来

<?php
//声明字符串变量$str
$str= 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言';
//输出字符串
echo $str;
?>
  • 用双引号声明

<?php
//声明字符串变量$str
$str= “PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言”;
//输出字符串
echo $str;
?>
  • 用字界符声明(需要输入非常大段的字符串时使用)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$str = <<<DJ
PHP 是
一种创建动态交互<br/>
性站点的强有力的服务器端
    <i>脚本语言</i>
    我想说:<h1>PHP简介</h1>
DJ;
echo $str;
?>
</body>
</html>

2.双引号和单引号有什么区别

  •  双引号解析变量,但是单引号不解析变量。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$name="小明";
$age="24";
//放入字符串中
$str1="我叫$name ,今年$age 岁,很高兴认识大家";
$str2='我叫$name ,今年$age 岁,很高兴认识大家';
//输出字符串
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>

通过上面可以得出结论:双引号执行变量,而单引号不执行变量

注:双引号需要解析变量,因此双引号的效率没有单引号高

  •  在双引号里面插入变量,变量后面如果有英文或中文字符,它会把这个字符和变量拼接起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$a="php.com";
$str1="$a欢迎您";
$str2="$a 欢迎您";
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>

从报错中可以看出,第一个把“a欢迎您”当成了一个变量,第二个正常输出。

  •  如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。

稍微改动下上面的例子

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$a="php.com";
$str1="$a 欢迎您";
$str2="{$a}欢迎您";
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>
  •  双引号解析转义字符,单引号不解析转义字符。但,单引号能解析\' 和\

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明字符串
$str1 = "改变世界之前\n请先\t改变你自己";
$str2 = '改变世界之前\n请先\t改变你自己';
echo $str1;
echo "<hr/>";
echo $str2;
?>
</body>
</html>

注:关于“单引号能解析\' 和\”,大家壳子自己动手尝试着去做下

  • 单引号效率高于双引号,尽可能使用单引号

  • 双号和单引号可以互插!!!双引号当中插入单引号,单引号当中插入变量,这个变量会被解析。

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$a='黄河';
$str="白日依山尽,'$a'入海流";
echo $str;
?>
</body>
</html>

注:大家可以尝试下双引号里面套双引号会出现什么情况

  • 神奇的字符串拼接胶水——(.)点,用来拼接字符串。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$name="小明";
$age="24";
//放入字符串中
$str1="我叫$name ,今年$age 岁,很高兴认识大家";
$str2='我叫$name ,今年$age 岁,很高兴认识大家';
//输出字符串
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>

这是之前的一个例子,前面提到过双引号能够解析变量,但是效率没有单引号高,我现在想既能够解析变量,又效率高,那就只有依靠(.)来帮助我们了

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$name="小明";
$age="24";
//放入字符串中
$str='我叫'.$name.' ,今年'.$age.' 岁,很高兴认识大家';
//输出字符串
echo $str;
?>
</body>
</html>
  • (.)点还可以用来连接多个字符串

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$str1 = '白日依山尽<br/>';
$str2 = '黄河入海流<br/>';
$str3 = '欲穷千里目<br/>';
$str4 = '更上一层楼<br/>';
echo $str1.$str2.$str3.$str4;
?>
</body>
</html>
  • 我们将定界符声明字符串视为双引号一样的功能来看待。

实例:

<?php
$a = '宣布对用户提现收费';
$b = '支付行业巨头的收费行动';
$str = <<<DJ
   支付宝
            $a
        这也是\t微信在年初宣布提现收费之后
        又一
            '$b'
        很<br />
       多人\n质疑
    <i>互联网公司</i>
    所提倡的免费<b>商业模式</b>难道走到了尽头
DJ;
echo $str;
?>

大家可以执行发现$,$,\t\n都可以执行,双引号单引号都能显示。这就是定界符的特点。

3.关于字符串的两个实用的函数

strlen(字符串)返回字符串的长度(字符数)

strpos(被查找的字符串,查找的字符或者文本)如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

实例:

<?php
//输出一个字符串的长度
echo strlen("Hello world");
echo "<br/>";
//在字符串 "Hello world!" 中查找文本 "world",字符串中第一个字符的位置是 0,而不是 1。
echo strpos("Hello world","world")
?>

注:字符串中首字符的位置是 0 而不是 1

完整字符串函数,请查看PHP参考手册


二、PHP 整型

整数就是一个没有小数的数字。

整数规则:

  •  整数必须至少有一个数字 (0-9)

  •  整数不能包含逗号或空格

  •  整数是没有小数点的

  •  整数可以是正数或负数

  •  整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

在以下实例中我们将测试不同的数字。 PHP var_dump() 函数返回变量的数据类型和值:

注:var_dump() 是一个函数。向括号()中间插入变量。这个函数,会打印出来数据类型,还会对应显示变量的长度和值

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//定义变量
$x = 5985;
$y = -345; // 负数 
$z = 0x8C; // 十六进制数
$w = 047; // 八进制数
//输出变量
var_dump($x);
echo "<br>";
var_dump($y);
echo "<br>"; 
var_dump($z);
echo "<br>";
var_dump($w);
?>
</body>
</html>

三、浮点型

所谓浮点类型,既为我们数学里面的小数。

下面通过实例,测试不同的数字

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php 
//定义变量
$x = 10.365;
$y = 2.4e3;
$z = 8E-5;
//输出变量
var_dump($x);
echo "<br>"; 
var_dump($y);
echo "<br>"; 
var_dump($z);
?>
</body>
</html>

四、布尔型

所谓布尔,可以理解为事物的两面性,有真就有假,有对就有错,当前的计算机系统使用的基本上是二进制系统,即为0和1的组合

布尔型只有两个值: TRUE 或 FALSE

$x=true;
$y=false;

常用于条件判断,在以后的学习中,你会经常和他打交道。

注:true和false外面不要加引号

类型转换:

一下情况会被转换为false

  • 布尔值=false

  •  整数=0

  •  浮点数=0.0

  • 空数组

  •  没有变量成语的对象

  •  变量值为空

其余情况下,基本会被转换为true


五、数组

上面定义的变量只能存储一个值,如果想要存储多个值的话,则就要用到数组了

在以下实例中创建了一个数组, 然后使用 PHP var_dump() 函数返回数组的数据类型和值:

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php 
//定义变量
$fruits=array("苹果","香蕉","梨子");
//输出变量
var_dump($fruits);
echo gettype($fruits);
?>
</body>
</html>

大家先对数组有个了解,掌握基本声明一个数组,判断是否是数组类型,其他的在后面有专门一章来讨论数组。


六、对象

  • 对象数据类型也可以用于存储数据。

  •  在 PHP 中,对象必须声明。

  • 首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

  •  然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

来看个实例:

<?php
//定义一个Car 类
class Car
{
  var $color;
  function Car($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
//实例化Car类
$car = new Car;
//输出查看类型
var_dump($car);
?>

对象这个暂时大家不用深究,以后会慢慢了解,暂时只要看到这个object知道是对象就可以了。


七、空值

NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。空(null)不是false,不是0,也不是空格。

1.null 产生的三种情况:

  • 通过变量赋值明确指定为变量的值为NULL

  • 一个变量没有给任何值

  •  使用函数unset()将变量销毁掉

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量为null
$n = null;
var_dump($n);
//var_dump显示输出变量$meiyou,看看结果是什么?
var_dump($a);
//声明一个变量$b的值为字符串的手机
$b = '手机';
//unset销毁掉一个变量
unset($b);
var_dump($b);
?>
</body>
</html>

2.empty和isset 两个函数的区别

  • empty()函数

empty()可以向括号中间传入一个变量。这个变量的值如果为false或者为null的话,返回true。

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$a=null;
if(empty($a)){
	echo '这个变量是空';
}else{
	echo '这个变量不是空';
}
?>
</body>
</html>

当$a=null 时empty返回true。

  •  isset()函数

isset()可以向括号中间传入一个或者多个变量,变量与变量间用逗号分开。只要有有一个变量为null,则返回false。否则,则返回true。

实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//传入一个变量
$a=false;
$b=isset($a);
var_dump($b);
echo "<hr/>";
//传入多个变量
$b=10;
$c=false;
$d=null;
$e=isset($b,$c,$d);
var_dump($e);
echo PHP_VERSION;
echo __LINE__;
?>
</body>
</html>

注:unset()这个函数的功能是毁掉变量。unset(变量)括号中间插入想要毁掉的变量名,这个变量就会被毁掉,大家可以自己动手销毁,然会用var_dump()函数说出来看看效果。


八、资源类型

资源类型很多初学者觉得比较难以理解。因为资源类型打印出来只能够看到一个英文的resource。其他的什么在电脑上都不能显示出来,而他有客观存在。

其实,资源类型很简单。我们针对词来进行说明。

电脑里面的资源是指:

  •  word,excel等文件

  •  有人收藏的美女图片和我们的自拍照片等图片

  •  音乐

  •  某些人爱看的AVI小电影

  •  打开的网页

  • 数据库
    ... ...等等

我们打开一个图片,用PHP来操作它,我们就是操作的一个资源。
我们打开的数据库连接,我们需要连接数据库,数据库就是我们操作的资源。
包括网络连接,连接后发送邮件,我们也可以认为是一个资源。

注:理解资源就提操作我们可见和不可见的文件、网络和数据。我们在以后的章节中,操作图片和网络的时候大家会有更为深刻的印象。


九、查看和判断数据类型

1.查看数据类型

在以后的学习和工作中,进行需要知道一个数据的数据类型,通过以下两个函数可以知道

  • gettype(传入一个变量) 能够获得变量的类型

  •  var_dump(传入一个变量) 输出变类型和值

实例:

<?php
//声明变量,输出其类型
$str = 9.99;
$type = gettype($str);
echo $type;
echo "<br/>";
$str1 = true;
$type1 = gettype($str1);
echo $type1;
echo "<br/>";
//声明变量,输出其类型和值
$str2 = "霸都";
var_dump($str2);
echo "<br/>";
$arr = array(1,23,4);
var_dump($arr);
?>

注:大家可以再尝试输出下其他几种类型

2.判断数据类型

我们使用is_* 系列函数。 is_types这一系列的函数,来进行判断某个东西是不是某个类型。如果是这个类型返回真,不是这个类型返回假。

  •  is_int 是否为整型

  •  is_bool 是否为布尔

  •  is_float 是否是浮点

  •  is_string 是否是字符串

  •  is_array 是否是数组

  •  is_object 是否是对象

  •  is_null 是否为空

  •  is_resource 是否为资源

  •  is_scalar 是否为标量

  •  is_numeric 是否为数值类型

  •  is_callable 是否为函数

实例:

<?php
$fo = false;
var_dump(is_bool($fo));
var_dump(is_null($fo));
$str='18.8';
var_dump(is_string($str));
?>

注:大家可以尝试其他几个,看看输出结果

Weiter lernen
||
<?php //声明字符串变量$str $str= 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言'; //输出字符串 echo $str; ?>
einreichenCode zurücksetzen