一、数据类型
上篇文章提到了数据类型,在PHP中支持以下几种类型
- String (字符串)
- Integer(整型)
- Float (浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- Null(空值)
- Resource(资源类型)
下面我们用PHP种var_dump打印数据来查看数据类型
1、String(字符串)
一个字符串和一串字符的序列,就像咱们的 ”hello word“。你可以讲任何文本放在单双引号中
代码片段
<!DOCTYPE html>
<html>
<body>
<h1>变量创建</h1>
<?php
$txt="Hello world!";
var_dump($txt);
?>
</body>
</html>
效果
2、Integer(整型)
整形规则
- 整数必须包含一个数字0-9
- 整数不能包含空格或者特殊符号
- 整数中不能包含小数点
- 整数可以正数或者负数
- 整形可以用三种格式来指定:十进制,十六进制(以0x为前缀)或八进制(前缀为0)
代码片段
<!DOCTYPE html>
<html>
<body>
<h1>变量类型</h1>
<?php
$float_a = 5985;
var_dump($float_a);
echo "<br>";
$float_b = -345; // 负数
var_dump($float_b);
echo "<br>";
$float_c = 0x8C; // 十六进制数
var_dump($float_c);
echo "<br>";
$float_d = 047; // 八进制数
var_dump($float_d);
?>
</body>
</html>
效果
3、Float(浮点型)
浮点数是带小数部分的数字,或是指数形式。
代码片段
<!DOCTYPE html>
<html>
<body>
<h1>变量类型</h1>
<?php
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
?>
</body>
</html>
效果
4、Boolean(布尔型)
布尔型一般用来判断,布尔型可以是 TRUE 或 FALSE。主要用于条件判断
在接下来的章节中你会学到更多关于条件控制的教程。
5、Array(数组)
数组可以在一个变量中存储多个值。可以有一维数组和多维数组,以下代码片段是创建一个数组并打印出类型
代码片段
<!DOCTYPE html>
<html>
<body>
<h1>变量类型</h1>
<?php
//基本数组定义 设置key值
$array=array('key'=>'value');
//例如
$array1=array("name"=>'张三',''=>"BMW","Toyota");
//或不设置key值,默认数组下标 从0开始
$array2=array("value");
//例如
var_dump($array1);
var_dump($array2);
?>
</body>
</html>
效果
array(1)代表这个数组中有1个元素
6、Object(对象)
这个后期讲到面向对象的时候会讲到此处不作解释
7、Null(空值)
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
8、Resource(资源类型)
PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。
常见资源数据类型有打开文件、数据库连接、图形画布区域等。
由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。
这个时候就不能用var_dump来打印了,可以使用 get_resource_type() 函数可以返回资源(resource)类型:
此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。
这个部分等到讲到php链接数据库的时候讲到
二、变量作用域
变量的作用域是脚本种变量可能被引用/使用的部分
PHP有四种不同的变量作用域:
- Local
- Global
- Static
- Parameter
1、局部和全局作用域
这个时候就会引入php种函数的概念,在函数外部定义的变量拥有全局作用域,就相当于公园里的座椅是公用的,谁都可以坐,所以全局变量可以被所有函数引用/使用
在函数内定义的变量为局部变量,函数相当于你的家,局部变量相当于你家的座椅,只能在你家里坐,所以局部变量只能被当前函数引用/使用
2、关键字
1、global
global 关键字用于函数内访问全局变量,相当于你在家里想坐公园的座椅,但是你家里没有,你可以让global去公园里照着公园的座椅仿制一个搬到你家里来,这样就达到了你能在家里坐到公园里的椅子
不使用global
代码示例
<!DOCTYPE html>
<html>
<body>
<h1>变量作用域</h1>
<?php
$x=5;
$y=10;
function myTest()
{
$x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
</body>
</html>
这个时候编辑器提示报错
效果
Parse error: syntax error, unexpected token "," in G:\phpstudy_pro\WWW\www.helloword.com\index.php on line 10
翻译:解析错误:语法错误,G:\phpstudy-pro_WWW\WWW.helloword.com\index.php第10行出现意外标记“,”
使用global
代码示例
<!DOCTYPE html>
<html>
<body>
<h1>变量作用域</h1>
<?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
</body>
</html>
编辑器不提示报错
效果
正常输出数据
2、Static
当一个函数完成时,它的所有变量通常都会被删除。但是有的时候你希望保留某个局部变量不要被删除所以就用到了static关键字
不使用 static关键字
代码示例
<!DOCTYPE html>
<html>
<body>
<h1>变量作用域</h1>
<?php
function myTest()
{
$x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
myTest();
myTest();
myTest();
?>
</body>
</html>
调用三次
效果
输出 000
使用static
代码示例
<!DOCTYPE html>
<html>
<body>
<h1>变量作用域</h1>
<?php
function myTest()
{
static $x=0;
echo $x;
$x++;
echo PHP_EOL; // 换行符
}
myTest();
myTest();
myTest();
?>
</body>
</html>
调用三次
效果
输出123
3、Parameter(参数作用域)
参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分
参数作用域就相当于你告诉你的朋友 ,今天来我家吃饭,你想吃啥可以带点食材来我来加工成你想吃的菜
你家(函数)
参数(食材)
成品(结果)
代码示例
这段代码的意思就是 你朋友带鱼来,你就可以做糖醋鱼
<!DOCTYPE html>
<html>
<body>
<h1>变量作用域</h1>
<?php
function myTest($parameter)
{
if($parameter=='鱼'){
echo "糖醋鱼";
}
}
myTest('鱼');
?>
</body>
</html>
效果
预告
下期讲函数