PHP第二课
变量的类型转换方式
PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:
(int)、(integer):转换成整形
(float)、(double)、(real):转换成浮点型
(string):转换成字符串
(bool)、(boolean):转换成布尔类型
(array):转换成数组
(object):转换成对象
PHP数据类型有三种转换方式:
在要转换的变量之前加上用括号括起来的目标类型
使用3个具体类型的转换函数,intval()、floatval()、strval()
使用通用类型转换函数settype(mixed var,string type)
第一种转换方式:
(int) (bool) (float) (string) (array) (object)
<?php
$num1=3.14;
$num2=(int)$num1;
var_dump($num1); //输出float(3.14)
var_dump($num2); //输出int(3)
?>
第二种转换方式:
intval() floatval() strval()
<?php
$str="123.9abc";
$int=intval($str); //转换后数值:123
$float=floatval($str); //转换后数值:123.9
$str=strval($float); //转换后字符串:"123.9"
?>
第三种转换方式:
settype();
<?php
$num4 = 12.8;
$flg=settype($num4,”int”);
var_dump($flg); //输出bool(true)
var_dump($num4); //输出int(12)
?>
变量的值传递和引用传递
传值赋值: 将源变量($a)的值赋值出来一份新的值内存空间地址给另一个变量($b);修改两个变量的值 互不影响
$a = 122;
$b = $a;
printf('$a的值为%d,$b的值为%d',$a,$b);
$a = 222;
printf('$a的值为%d,$b的值为%d',$a,$b);
2.引用赋值 &地址引用符,互相影响,没有赋值操作,因而引用赋值更加块
<?php
$price1 = 25;
$price2 = &$price1
printf(‘$price1的值为%d,$price 为%d<br>‘,$price1,$price2);
$price1 = 250;
printf('$price1的值为%d,$price2的值 为%d<br>',$price1,$price2);
$fo = 35;
$bar = &$fo; //仅仅是取消关联,bar还是等于35
unset($fo);
var_dump($bar); //35
?>
变量的作用域
常量,类,接口,函数,全局成员,变量不是全局成员, 受作用域的限制
// 变量的作用域问题:
<?php
function demo(){
$a = 100;
$b = 200;
echo $a+ $b;
}
demo();
echo $a; //报错访问不了
?>
###全局变量
$one = 100;
$two =200;
function test(){
// 1.global 引用
global $one,$two;
echo '运算结果是:'.($one+$two);
echo '<hr />';
// 2.$GLOBAL超全局变量
echo '运算结果是:'. ($GLOBALS['one']+$GLOBALS['two']);
}
test();
PHP 魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
LINE
文件中的当前行号。
FILE
文件的完整路径和文件名。
DIR
文件所在的目录
FUNCTION
函数名称(PHP 4.3.0 新加)
CLASS
类的名称(PHP 4.3.0 新加)
TRAIT
Trait 的名字(PHP 5.4.0 新加)
METHOD
类的方法名(PHP 5.0.0 新加)
NAMESPACE
当前命名空间的名称(区分大小写)
例如 LINE 的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写,如下:
LINE
文件中的当前行号。
实例
<?php
echo '这是第 " ' . __LINE__ . ' " 行';
?>
FILE
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
实例:
实例
<?php
echo '该文件位于 " ' . __FILE__ . ' " ';
?>