一、 php 打印输出
- echo '显示' 输出内容到浏览器
echo "hello";
- print '打印' 有返回值 1,可用于三元运算符
$res=print "hello"; // hello
echo $res; // 1
- var_dump() 返回变量的完整信息
$tel = 15845454454;
var_dump($tel); //int(15845454454)
var_dump('125425'); //string(6) "125425"
$arr = [1,2,'hello',5,4];
var_dump($arr);
- print_r() var_export(),第二个参数设置为true 可以将变量的信息转换成一个字符串 不输出到浏览器 用于线上调试,sql日志记录
$arr = [1,2,'hello',5,4];
$res = print_r($arr,true);
file_put_contents('log.txt','调错信息:'.$res);
$res1 = var_export($arr,true);
file_put_contents('log1.txt','调错信息:'.$res1);
二、php 数据类型
- 8种变量类型
- 4标量类型
//标量类型: int,float,bool,string
$int = 22;
$float = 52.25;
$bool = true;
$str = 'hello uniapp';
- 2复合类型(array, object)
- 2特殊类型(resource, null)
// 1. resource 资源类型:保存到外部资源的一个引用
// fopen()
$handle = fopen('log.txt','w');
var_dump($handle);//resource(3) of type (stream) 3是资源类型id stream 资源类型
// imagecreate()
$image_handle = imagecreate(100,50);
var_dump($image_handle);//resource(4) of type (gd)
// 2. null
// 1) 表示一个变量没有值,空
// 2) 不表示空格,不表示零,也不表示空字符串
// 3) 不区分大小写,NULL
$int = null;
var_dump($int);//NULL
$username = 'chloe';
unset($username);
// @ 为"错误抑制符"
@var_dump($username);
// php是弱类型语言,变量的类型随值的变化而变化
三、php 变量类型转换
| 转换方式 | 函数 |
|---|---|
| 临时转换 | (int),(string),(array),(object)... |
| 自动转换 | 根据操作符对操作数的类型要求进行 |
| 强制转换 | settype() |
//1. 临时转换
$uid = 25;
var_dump($uid,(string)$uid,(float)$uid);// int(25) string(2) "25" float(25)
// 2. 系统自动转换
// 1) "+","-" 要求参与计算的数据都是数值类型,如果不是,就是会触发自动转换
$foo = '100pages';
@$foo += 200;
var_dump($foo);// int(300)
$foo += 12.3;
var_dump($foo);// float(312.3)
@$res = null + '10 kg rice';
var_dump($res);// int(10)
// 2) . 字符串拼接符
echo 'how are you' . 100 . '<br>';
// 3) 布尔类型转换
@var_dump($email);//null
//null===>false
if(!@$email)
{
echo 'email不存在';
}
/**
* 以上类型转换都无法改变被转换变量本身的类型,
* 而是通过转换, 将得到的新类型的数据赋给了新的变量,
* 原变量的类型与值保持不变
*/
$p = $_GET["page"];
echo gettype($p);// string
// 3.类型永久转换
settype($p,'integer');
echo gettype($p);// integer
四、类型检测
| 转换方式 | 函数 |
|---|---|
| 标量 | is_int(),is_string(),is_bool()... |
| 复合 | is_array(),is_object() |
| 特殊 | is_null(),is_resource() |
五、变量
变量: 就是代码中需要暂存的数据载体, 可以复用 按名访问
变量的命名 : 合法标志符
- 仅允许字母a-z,A-Z,数字,下划线 _
- 禁止以数字开头
- php系统预定义的保留字, 关键字 不能作为变量的名称, this class function public static private
- 望文生义
$username $password $email- 变量严格区分大小写, 函数不区分大小写
- 多个单词组成的变量名
aaaBbbCcc getInfo $itemName $itemPrice
$var = 'hello';
$VAR = true;
var_dump($var,$VAR);// string(5) "hello" bool(true)
VAR_DUMP($var,$VAR);// string(5) "hello" bool(true)
// 变量赋值
/**
* 1. 传值赋值: 将源变量($a)的值复制出来一份新的值内存空间地址给另一个变量($b), 修改两个变量的值 互不影响
*/
$a = 45;
$b = $a;
printf('$a的值为%d,$b的值为%d<br>',$a,$b);// $a的值为45,$b的值为45
$a = 450;
printf('$a的值为%d,$b的值为%d<br>',$a,$b);// $a的值为450,$b的值为45
/**
* 2. 引用赋值 &地址引用符
* 新的变量$price2 引用/指向了原始变量, 互相影响, 没有复制操作,因而引用赋值更加快
*/
$price1 = 25;
$price2 = &$price1;
printf('$price1的值为%d,$price2的值为%d<br>',$price1,$price2);
// $price1的值为25,$price2的值为25
$price1 = 250;
printf('$price1的值为%d,$price2的值为%d<br>',$price1,$price2);
// $price1的值为250,$price2的值为250
$foo = 35;
$bar = &$foo;
unset($foo);//仅仅是将$foo,$bar互相取消关联
var_dump($bar);//int(35)
六、常量
- define(): 函数
- const: 关键字
- 固定的值(圆周率), 常量不能重新被定义或取消定义
- 常量的命名前不能加 $
- 常量推荐全部大写,多个单词之间用下划线连接
- 常量, 类, 接口,函数 全局成员, 变量不是全局成员 受作用域的限制
七、php 魔术常量
__LINE__
__DIR__
__FUNCTION__
__METHOD__
__NAMESPACE__