1.输出
在PHP中提供了4种输出方式,echo,print,printf,sprintf.
1、echo()
echo() echo可以输出一个或多个字符串,可用圆括号,也可以不用。此函数无返回值。其中echo后面跟单引号('')与双引号(""),均可以输出常量字符串,但是,单引号中的字符串并不解析变量,只有双引号中才解析变量,例如
<span style="font-size:14px;"> $a = 10;
echo '$a';
echo "$a";
//单引号echo输出结果为$a 双引号结果为10</span>
在双引号中,中文和变量一起使用时,变量最好用\{}括起来,或者变量前后的字符串用双引号,再用”.”与变量链接。例如
$str = "年轻人";
echo "我们都是$str,应该多学习"."</br>";
echo "我们都是{$str},应该多学习"."</br>";
echo "我们都是".$str.",应该多学习"."</br>";
因为第一句输出没有按照规定拼接,则三条打印信息打印语句如下:
Notice: Undefined variable: str,应该多学习 in /Applications/XAMPP/xamppfiles/htdocs/MyService/Service.php on line 20
我们都是
我们都是年轻人,应该多学习
我们都是年轻人,应该多学习
2、print()
print()函数输出一个或者多个字符串时,可用圆括号也可不用。print()函数有返回值,其返回值为1,当其执行失败时(比如断线),返回false。
3、printf()
printf()函数输出格式化的字符串。即一部分原样输出,一部分按照格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式,各参数之间用","分开。printf()也有返回值,其返回值为字符串的长度。
4、sprintf()函数
sprint()函数并不是一个主动输出的函数,但是sprintf()函数的返回值却是其字符串本身,所以结合echo便可以进行输出。
2.变量
在这里对其他变量如:局部变量,全局变量,静态变量等不再阐述,就说几个php中比较有特点的吧
1、可变变量
可变变量是一种独特的变量,它可以动态的改变一个变量的名称,方法就是在该变量的前面加一个"$".例如下面代码
$a = "Hello";
$$a = 'world';
echo $a."</br>";
echo $$a."</br>";
echo $Hello."</br>";
echo "$a{$$a}"."</br>";
echo "$a $Hello"."</br>";
//1.Hello 2.world 3.world 4.Helloworld 5.Hello world
2、预定义变量
预定义变量又称为超级全局变量数组,是php系统中自带的变量,不需要开发者重新定义,它可以让你的程序设计更加的方便快捷。在PHP脚本运行时,php会自动将一些数据放在超级全局数组中。
PHP预定义变量
变量 |
作用 |
$GLOBALS[] |
储存当前脚本的所有全局变量,其KEY为变量名,VALUE为变量值 |
$_SERVER[] |
当前WEB服务器变量数组 |
$_GET[] |
存储以GET方法提交表单中的数据 |
$_POST[] |
存储以POST方法提交表单中的数据 |
$_COOKIE[] |
取得或设置用户浏览器Cookies中存储的变量数组 |
$_FILES[] |
存储上传文件提交到当前脚本的数据 |
$_ENV[] |
存储当前WEB环境变量 |
$_REQUEST[] |
存储提交表单中所有请求数组,其中包括$_GET、$_POST、$_COOKIE和$_SESSION中的所有内容 |
$_SESSION[] |
存储当前脚本的会话变量数组 |
|
|
|
|
3.自动类型转换:
自动类型转换是指,在定义变量时不需要指定变量的数据类型,PHP会根据引用变量的具体应用环境将变量转换为合适的数据类型。
注:字符串转数字进行计算时,如果字符串以数字开头,则只取数字部分而去除数字后面部分,如果字符串以字母开头,则直接将字符串转为0。
4.强制转换类型
强制转换类型顾名思义就是我们手动将变量的数据类型转换为制定的数据类型。PHP强制转换类型与C语言以及Java语言中相类似。都是通过在变量前面加上一个小括号,并把目标数据类型填写在括号中来实现。
1.其他数据类型转整型时的规则
1.1 字符串转为整型数字
(1)字符串为纯整型数字,则转换成为相应的整型数字;
(2)字符串为带小数点的数字,转换时去掉小数点后面的部分,保留整数部分;
(3)字符串以整型数字开头,转换时去除整型数字后面的部分,然后按照规则1进行处理
(4)字符串以带小数点的数字开头,转换时去除小数点后面的部分,然后按规2进行处理
(5)字符串内容以非数字开头,直接转换为0
1.2 浮点型数据向整型数据转换
(1)直接向下取整,不采取‘四舍五入’的方法,寄去掉浮点数小数点后面的部分,只保留整数部分;
(3)如果几个浮点数相乘的话,应将大于1的数放在前面,并将整式括起来进行计算;
(4)如果浮点数相除的话,应将其整式括起来进行计算;
1.3 布尔型转为整型
true转为整型数字”1”,false转为整型数字“0”;
2.其他数据转为浮点型的规则
2.1 整型转为浮点型
将整型数据直接转为浮点型,数据保持不变;
2.2 布尔型转为浮点型
true直接转为浮点型数字”1”,false直接转为浮点型数字”0“;
2.3 字符串转为浮点型
(1)字符串为整型数字,直接将其转换成相应的浮点型数字;
(2)字符串以数字开头,转换时去掉数字后面的部分,然后按照规则1进行处理;
(3)字符串以带小数点的数字开头,转换时直接去除数字后面的部分,只保留数字部分;(注意:当字符串以小数点开头时,默认开头数字为0,比如$a = .123 输出则为0.123);
(4)字符串以非数字开头(不包括标点)直接转换为0;
3.其他数据类型转为布尔型的规则
3.1 整型转为布尔型
0转为false,非零的其他整型数字转为true;
3.2 浮点型转为布尔型
0.0转为false,非零的其他浮点型数字转为true;
3.3 字符串转为布尔型
空字符串或者字符串内容为零的转为false,其他为true;
3.4 NULL转为布尔型
直接转为false
3.5 数组转为布尔型
空数组转为false,非空数组转为true
4.其他数据类型转换为字符串的规则
4.1 整型转字符串
转换时直接在整型两边加上双引号作为转换后的结果;
4.2 浮点型转字符串
转换时直接在整型两边加上双引号作为转换后的结果;
4.3 布尔型转字符串
true转为”1”,false转为”0”;
4.4 数组转为字符串
直接转换为字符串”Array”;
4.5 对象转为字符串
直接转为字符串”Object”;
4.6 NULL转为字符串
直接转换为空字符串;
5.其他数据类型转为数组的规则
5.1 整型、浮点型、布尔型、字符串转为数组
将这几个数据类型强制转为数组时,得到的数组只包含一个数据元素,该数据就是为转换前的数据,并且该数据的数据类型也与未转换前相同。
5.2 对象转为数组
转换时将对象的成员变量的成员变量名作为数组元素的key,而转换后数组每个key的value都为空。
(1)如果成员变量为私有的(private),则转换后key的名称为”类名+成员变量名”
(2)如果成员变量为公有的(public),则转换后key的名称为”成员变量名“
(3)如果成员变量为受保护的(protected),则转换后key的全名称为”\*+成员变量名“
5.3 NULL转为数组
直接转换为一个空数组;
例如:
$a = 123;
$b = 3.14;
$c = TRUE;
$d = "Hello";
class A{
private $private;
public $public;
protected $protected;
}
$e = new A();
$f = NULL;
echo var_dump((array)$a).'</br>';
echo var_dump((array)$b).'</br>';
echo var_dump((array)$c).'</br>';
echo var_dump((array)$d).'</br>';
echo var_dump((array)$e).'</br>';
echo var_dump((array)$f).'</br>';
在网页中显示为
array(1) { [0]=> int(123) }
array(1) { [0]=> float(3.14) }
array(1) { [0]=> bool(true) }
array(1) { [0]=> string(5) "Hello" }
array(3) { ["Aprivate"]=> NULL ["public"]=> NULL ["*protected"]=> NULL }
array(0) { }
6.其他数据类型转为对象的规则
6.1 整型、浮点型、布尔型、字符串转为对象
将其他类型变量转为对象时,将会新建一个名为”scalar“的属性,并将原变量的值存储在这个属性中。
6.2 数组转为对象
将数组转为对象时,数组的key作为对象成员变量的名称,对应各个key的value作为对象成员变量保存的值。
6.3 NULL转为对象
直接转为一个空对象;