细说PHP中的变量和数据类型
1. PHP中变量基础学习
// php程序由哪几部分组成?
// 代码
function sum(int $a,int $b){
// 返回结果给调用者
return "$a + $b =".($a+$b);
}
// 执行,将执行结果打印输出
echo sum(30,40);
<?php
// php打印输出
$email = 'admin@php.cn';
// echo 回显,效率最高,没有返回值
echo $email, '<br>';
echo '<span style="color:red;">'.$email.'</span>';
echo '<hr>';
// print与echo 区别
// 1. echo 可以打印多个变量,且没有返回值
// 2. print 仅能打印单个变量, 返回1
echo print $email;
echo '<hr>';
// 查看变量类型,只能返回类型
echo gettype($email)."<br>";
// var_dump()想获取到变量的完整的信息
var_dump($email);
echo '<br/>';
var_dump(12343);
echo '<hr>';
// var_export(): 返回一个变量的字符串表示(源代码)
var_export($email);
运行结果截图
<?php
// 变量的命名
// 变量是临时存储数据的容器
// 变量是实现数据复用的手段
$username = "admin";
$userName = "peter";
// 1. 变量区分大小写
echo "$username=".$username."<br> UserName=".$userName;
echo '<br>';
// 2. 函数是不区分大小写
echo strtoupper($userName);
echo '<br>';
echo STRTOUPPER($userName);
// 3. 变量名必须以"$"开始
echo '<br>';
// $hello = 'php';
// echo $hello;
//4.变量标识符不允许用数字开始
// 如下例,会报错
// $123a = "phpcn";
// echo $123a;
// 5.变量允许使用下划线开始
$_email = 'qbh@qq.com';
echo $_email;
//6. 变量名不允许使用特殊字符,@
// $aad@c = "phpcn";
// echo $aad@c;
echo '<br>';
//7.变量标识符: $开始,仅允许字母,下划线和数字,且不允许使用数字开始
// 中文可以用作变量名,但不推荐
$我的邮箱 = "php@php.cn";
echo $我的邮箱;
// 无意义, 不要用,变量名要望文生义
$aaa = "phpcc";
$_ = 1234;
运行结果截图
<?php
// 变量的动态: 是指变量的类型可以随值而变化
$var = 100;
var_dump($var);
echo "<hr>";
$var = 'php.cn';
var_dump($var);
运行结果截图
// 变量的有值传递与引用传递二种方式赋值
// 1. 值传递,也是默认的方式
$price1 = 100;
$price2 = $price1;
echo $price2;
echo "<br>";
// 更新price2
$price2 = 1992;
// 查看price1
echo "price1=".$price1."<hr>";
// 总结,值传递时,变量相互独立,不受影响
// 2. 引用传递
$price1 = 100;
// 在等号的右边/右值前面加上&(取地址符)
// 当前$price2中保存的并不是99, 而是$price1变量在内存中的地址, [0xabcd1234] = 99
$price2 = &$price1;
echo $price2;
echo "<br>";
// 更新price2
$price2 = 199;
// 查看price1, 会发现print1与price2同步更新了
echo 'price1 = ' . $price1 . '<hr>';
运行结果截图
<?php
// 可变变量
$var = 'email';
echo "<br>";
// $email = 'admin@php.cn';
// 变量名可以动态的创建,给变量加一个$符,可以动态创建变量名
$$var = 'admin@php.cn';
echo $email;
运行结果截图
<?php
// 变量的检测与删除
// 打开所有的报错
error_reporting(E_ALL);
// echo $username;
// 变量检测
$username = 'Joe';
$username = null;
// isset():如果该变量存在且值不为null才是true
if(isset($username)) echo $username;
else echo '没有定义该变量'.'<br>';
// unset():删除变量, 没有返回值
// unset($username);
// echo $username;
$var = '';
if(empty($var))
var_dump($var).'<br>';
运行结果截图
<?php
// 数据类型
// 基本类型, 复合类型, 特殊类型
// 1. 基本类型
// 1.1 字符串
$name = '手机';
echo $name;
echo '<br>';
// 1.2 数值
$price = 2980;
echo $price;
echo '<br>';
// 1.3 布尔
$is5G = false;
// echo $is5G;
var_dump($is5G);
echo '<br>';
// 2. 复合类型, 对象,数组
// 2.1 对象
$obj = new stdClass;
// 对象是属性和方法的无序集合
$obj->name = "peter zhu";
$obj->age = 35;
echo $obj->name;
echo '<br>';
echo $obj->age.'<hr>';
// 2.2数组
$arr = ['电脑',5000,'Dell'];
// print_r()以人性化的方式打印变量,true表示不直接打印,而返回
// 返回就是一定要有一个接收者
// 打印数组方式1
print_r($arr);
// 打印数组方式2
$str = print_r($arr,true);
echo '<pre>'.$str.'</pre>';
// 基本类型: 标量, 单值
// 复合类型: 多值,
// 3. 特殊类型
//NULL
$null = NULL;
var_dump($null);
echo '<br>';
// $f就是文件资源类型
$f = fopen('demo2.php','r');
var_dump($f);
echo '<br>';
echo gettype($f);
运行结果截图
<?php
// 变量的类型转换
// 自动转换: 是由php系统偷偷进行的,不需要用户主动参与
$a = null;
$b = true;
$c = false;
$d = 'g5';
$ds = "5g";
$e = 'php';
$f = 15;
// null在算术运算中自动转为0
echo $a + 10, '<br>';
// true在算术运算中转为1
echo $b + 10, '<br>';
// echo $d + 10, '<br>';
// echo $ds + 10, '<br>';
// echo $e + 10, '<br>';
// . : 字符串连接操作
echo $e . $f, '<br>';
echo '<hr>';
// 强制转换
// 如果不想看到警告,通过强制转换解决
// echo (int)$e + 10, '<br>';
// 强制转换建议用intval,不建议使用int
echo intval($e) + 20, '<br>';
echo strval($f) . ' hello'.'<br>';
echo gettype($f);
echo '<hr>';
// 永久转换
settype($f,'string');
echo gettype($f);
运行结果截图
2.总结
1.echo 回显,效率最高,没有返回值
2.var_dump()想获取到变量的完整的信息
3.变量是临时存储数据的容器,变量是临时存储数据的容器
4.变量区分大小写,函数是不区分大小写
5.变量命名:变量标识符: $开始,仅允许字母,下划线和数字,且不允许使用数字开始
6.变量的有值传递与引用传递二种方式赋值
7.变量的检测与删除方法: unset()删除变量,isset()是空才为true,empty()判断是否为空
8.变量的类型转换:. : 字符串连接操作;强制转换建议用intval,不建议使用int;永久转换 settype($f,'string');