类型转换
临时转换:用户
- 转换成整数 (int)
$id='123'; echo (int)$id; echo gettype((int)$id);
- 转换成字符串 (string)
echo (string)$id; echo gettype((string)$id);
- 转换成浮点数(float)
$id='123.456';echo (float)$id; echo gettype((float)$id);
- 转换成数组 (array)$n,访问 ((array)$n)[0]
$id='123.456'; echo ((array)$id)[0]; echo gettype((array)$id);
字符串转对象(object)$str,((object)$str)->scalar;$id='123.456'; echo ((object)$id)->scalar; echo gettype((object)$id);
- 转换成整数 (int)
自动转换:系统
每一种操作符,它要求的操作数类型是固定的,如果不满足就自动转换- ‘+’ 要求参与计算的数据都是数值类型,如果不是,就自动转换为数值
echo 1+'2','<br>';
echo (int)'a2','<br>';
echo 1+'2a','<br>';
echo (int)'2a','<br>';
如果字符串开始是英文,则不能转换或者为0,如果开始是数值型字符串,则省略掉后面的英文字符串 - ‘.’ 两边都是字符串,如果不是就转换
echo 'php'. 123 .'<br>'; echo 'php'.(string)123;
- 布尔类型转换
if(!$a) echo'没有定义';
var_dump($a);
var_export((bool)null);
if(!isset($a)) echo'没有定义';
- ‘+’ 要求参与计算的数据都是数值类型,如果不是,就自动转换为数值
永久转换:只针对变量
settype()设置变量类型 gettype()获取变量类型
$price=6666;
settype($price,'string');
echo $price;
echo gettype($price);
变量类型检测
- is_numeric() 检测参数是否是数值或者数值型的字符串;
function sum($a,$b){
if(is_numeric($a) && is_numeric($b))
echo $a.'+'.$b.'='.($a+$b).'<br>';
else echo'参数类型错误';
}
sum(1,2);
sum('1',2);
sum('1','2');
sum('php','abc');
- is_string()
- is_boole()
- is_array()
- is_object()
- is_null()
- is_resource()是否资源
- is_scalar()检测变量类型是否是标量 (单值) 数值对象不是
php7+:参数类型检测,支持复合类型也支持标量function sum1(int $a,int $b){
return $a.'+'.$b.'='.($a+$b);
}
echo sum1('1',2);
变量代码中需要暂存的数据,按名访问
- 合法标识符
- 仅允许使用 英文字母(a-z,A-Z),数字(0-9),下划线(_);
- 禁止使用数字开头;
- 标识符有二类:预定义的(保留字,关键字) 自定义;
变量声明
变量声明规则
-1.变量必须要以’$’为前缀:$name,
-2.变量严格区分大小写,函数不区分大小写
function hello($name){
return $name;
}
echo HELLO('php').'<br>';
echo hello('html').'<br>';
$name='php';
$Name='html';
echo $name.'<br>';
echo $Name;
命名规则
-1、驼峰式命名
-2、蛇形 xx_xxx()函数
-3、帕斯卡UserModel 类,大驼峰
-4、常量 全大写
变量赋值
- $$可变变量,变量标识符来自另外一个变量
$$url='站点';
echo $url.'=>'.$$url.'<br>';
echo $url.'=>'.$site.'<br>';
- 默认是值传递
$price2=$price;
printf('price=%d,price2=%d <br>',$price,$price2);
$price=456;
printf('price=%d,price2=%d <br>',$price,$price2);
- 引用赋值 其实就是给原始变量起一个别名,并为创建新变量
$price2=& $price;printf('price=%d,price2=%d <br>',$price,$price2);
$price=789;
printf('price=%d,price2=%d <br>',$price,$price2);
- $$可变变量,变量标识符来自另外一个变量
预定义变量
超全局变量:数组,任何地方都可以访问,不受作用域限制
$GLOBALS:引用全局作用域中可用的全部变量
$_SERVER:服务器和执行环境信息
$_GET:通过url参数传递给当前脚本的变量的数组
$_POST:当http post请求的content-type=application/X-www-data
$_FILES:通过http post方式上传到当前脚本的文件的数组
$_COOKIE:通过http Cookies方式传递给当前脚本的变量的数组
$_SESSION:当前脚本可用session变量的数组
$_REQUEST:默认包含了$_GET $_POST $_COOKIE 的数组
$_ENV:通过环境方式传递给当前脚本的变量的数组$email='admin@qq.com';
printf('name=%s,email=%s',$name,$email);
echo '<br>';
printf('name=%s,email=%s',$GLOBALS['name'],$GLOBALS['email']);
// var_dump($_SERVER);
echo 'ip:'.$_SERVER['REMOTE_ADDR'].'<br>';
echo '浏览器:'.$_SERVER['HTTP_USER_AGENT'].'<br>';
echo '当前php文件绝对路径='.$_SERVER['SCRIPT_FILENAME'].'<br>';
echo '当前php文件相对路径='.$_SERVER['SCRIPT_NAME'].'<br>';
echo '当前php文件名称='.$_SERVER['PHP_SELF'].'<br>';
echo '查询条件='.$_SERVER['QUERY_STRING'].'<br>';
echo 'PATH_INFO='.$_SERVER['PATH_INFO'].'<br>';
echo 'URI:'.$_SERVER['REQUEST_URI'].'<br>';
echo $_GET['id'];
常量
常量是固定的值,一旦创建不可更新不可删除
常量不是变量,不加$;常量推荐全部大写,多个常量之间用_连接- 1 define()函数
define('NATION','CHINA');
- 2 关键字 const
const GENDER='男';
printf('国籍:%s,性别:%s',NATION,GENDER);
- const 和define的区别
- const运行在编译阶段,必须要有值
- define()在运行阶段才创建变量
- const 只支持字面量,不支持表达式
- const 只用在类和全局中