php标签,php变量,php数据类型与数据类型转换
1.php标签
- php程序 以 \<?php 开头
- php程序 以 \?> 结尾
- ; 语句分隔符 代表当前语句的结束
- // php单行注释
- / 多行注释 /
- 代码缩进 提高代码的可读性
- 打印函数(echo,print var_dump,print_r ……);
- 拼接使用. -> 通过 . 拼接的数据都会变成字符串(String) 类型
程序是纯php代码可以不用写结束标签 否则(代码中存在其他代码)则需要完整的写出php脚本<?php ?>
添加注释的代码不会被程序执行,作用 说明注释内容的信息 作用 方便后期维护与逻辑的梳理
<?php
// 单行注释
// 只存在php程序 可以不用 php结束标签
echo '2020-7-3';
function sum($a,$b){
return "{$a} + {$b} = " . ($a + $b);
}
// 调用函数 sum 并打印函数返回结果
echo sum(10,20);
<?php
/*多行注释
此脚本存在html标签 需要在适当的地方书写php结束标签
*/
echo '2020-7-3';
?>
<p>12312</p>
7.打印语句
// echo 可以打印多个表达式,并且识别html标签。但 echo 没有返回值。
$username = '盘古';
$hobby = ['唱','跳','rap','篮球'];
echo 123,'<br/>',$username;
// print 只能打印单个表达式 如果非要打印多个变量使用 . 拼接 print()有返回值。
print($username);
print('hello') . $username;
// var_dump() 获取数据的详细信息(变量类型,长度,值);
// ps: 1.utf-8编码类型中 中文汉字一般占3个字符 2.gbk编码中一般占2个字符
var_dump(123.5);
// float(123.5)
var_dump($username);
// string(6) "盘古"
// var_export(); 输出或返回一个变量的字符串表示(源代码)
// 1.直接输出 结果
var_export($hobby);
// 2.也可以通过设置 var_export()的第二个参数为True 从而返回变量的表示
$h = var_export($hobby,true);
print($h);
2.变量
变量是临时存储数据的容器
变量是实现代码复用的有效途径
- 变量的命名
php变量名必须以 ‘$’ 开头
php变量名不能以数字开头
变量名允许以 ‘_’开头
变量名不能包含特殊字符(@ # & * …..)
*变量名(变量标识符):仅允许字母,下划线,数字组合,并且不能以数字开头
*不推荐命名规则: 使用中文 无意义命名
// php 变量区分大小写 函数不区分大小写
// javascript 变量和函数都区分大小写
// 变量区分大小写
$username = 'admin';
$userName = 'root';
print($username);
print($userName);
// admin root
// 函数 类名不区分大小写(内置函数,自定义函数);
// 例如:
echo strtoupper($username);
echo STRTOUPPER($username);
// ADMIN ADMIN
function upName($name){
echo strtoupper($name);
}
upName($username);
UPNAME($username);
// ADMIN ADMIN
- 变量的动态: 变量的类型随值而变化
$var = 123;
var_dump($var);
// int(123)
// 此时修改$var的值为 'admin'
$var = 'admin';
var_dump($var);
// string(5) "admin"
// $var 的类型由 int类型 变成了 string类型
// php 变量的类型由值决定 和javascript一样
- 变量的赋值(传递):值传递和引用传递
值传递(默认的方式)
```php
$price1 = 99;
$price2 = $price1;
// 更新 price2 的值
$price2 = 199;
echo ‘$price1->’,$price1,’<br>‘;
echo ‘$price2->’,$price2,’<br>‘;// $price1->99
// $price2->199
// 值传递 只是将 一个变量的值 复制一份 并重新给另一个变量赋值 之后两个变量就没有关系
+ 引用传递
```php
// 引用传递
$name1 = 89;
// 在等号的右边(右值)前面加上&(取地址符,)
$name2 = &$name1;
$name2 = 288;
echo '$name1->'.$name1.'<br>';
echo '$name2->'.$name2.'<br>';
// $name1->288
// $name2->288
// name1和name2同步更新
// 引用传递 将一个变量的内存地址 赋值给另一个变量 此时两个变量指向同一个内存地址 每次修改变量值 并不是修改的内存地址 而是修改的值 所以两个变量的值都会发生变化
可变变量
$var = 'email';
//$email = '1852331324154@qq.com';
$$var = '1852331324154@qq.com';
echo $email;
//通过可变变量 用代码生成变量名使用
变量的检测和删除
规定不同的错误级别报告
// 关闭错误报告
error_reporting(0);
// 报告 runtime 错误
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// 报告所有错误
error_reporting(E_ALL);
// 等同于 error_reporting(E_ALL);
ini_set("error_reporting",E_ALL);
// 报告 E_NOTICE 之外的所有错误
error_reporting(E_ALL & ~E_NOTICE);
变量检测 isset();
- isset() 判断变量是否存在且值不为null
- 如果变量不存在 返回 false
- 如果变量存在但值为 null 返回false
- 如果变量存在且值不为 null 返回 true
// var_dump(isset($name)); 判断变量是否存在且值不为null
//
var_dump(isset($name));
// 打印 bool(false) 说明变量为null
$name = null;
var_dump(isset($name));
// 打印 bool(true) 说明变量存在且不为 null
if(isset($name)){
echo '变量存在且值为:'.$name;
}else{
echo '变量未定义';
}
// 程序进入了 else 此时虽然变量 $name 存在 但它的值为 null 返回了 false
变量删除 unset()
- unset() 是一个函数 但是它没有返回值(不能用于 判断语句)
判断值是否为空 empty()
- empty() 判断变量是否为空或者不存在
- 如果变量不存在 返回 true
- 如果变量值为空 ‘’, 返回 true
- 如果变量存在 且值不为空 返回 false
$var = '';
if(empty($var)){
echo '返回true';
}else{
echo '返回false'
}
// 进入了 if 语句 因为此时 变量为空
数据类型
- 基本类型
字符串类型(string):字符串是连续的字符序列,字符串中的每个字符只占用一个字节 ‘’和””包裹的字符串有不同含义 ‘’包裹的字符串就是普通的字符串 “”包裹的字符串 PHP 将对一些特殊的字符进行解析(\n \t \r ….)
布尔值(boolean): true 或者 false(真或者是假) 0 undefined null false 都为 false 其余的都为 true
整数(integer): 整数数据类型只能包含整数。这些数据类型可以是正数或负数
浮点数(float): 浮点数是有小数点或指数形式的数字。
- 复合类型
数组(array):数组在一个变量中存储多个值。
对象(object): 对象是存储数据和有关如何处理数据的信息的数据类型。对象的属性和方式是无序的,通过对应的键获取对应的值
- 特殊类型
资源(resource):文件资源类型
空值(null): 空值是最简单的数据类型。表示没有为该变量设置任何值,另外,空值(NULL)不区分大小写
// 基本类型(标量 单值); 存放在栈内存中
$name = '盘古';
$bool = false;
$age = 12;
$price = 12.6;
// 复合类型(多值); 数据存放在堆内存中 但内存地址 存在栈内存中
// 对象
$obj1 = new stdClass;
$obj1 -> name = '盘古';
$obj1 -> age = 18;
var_export($obj1);
echo '<br/>';
echo $obj1->name; // 打印 对象 name属性
// 数组
$arr = ['cl',18,'唱'];
$lan = print_r($arr,true);
echo '<pre>'.$lan.'</pre>'.'<br />';
echo $arr[0]; // 打印数组下标为0的值
// 特殊类型
$nu = null;
echo gettype($nu);
// 打印null类型
// 文件句柄
$file1 = fopen("text.txt",'r');
var_dump($file1);
// resource(3) of type (stream) 资源类型
- 获取数据类型 gettype()
$one = '132';
echo gettype($one);
// string
设置数据类型 settype()
数据类型转换 settype()
自动转换: 是由php内部转换的 不需要主动转换
```php
$name = ‘判断’;
$age = 18;
$t = true;
$f = false;
$g = ‘5g’;
$g1 = ‘g5’;
$ph = ‘php’;
echo $name + 10,’<br />‘;
// 警告 $name 为非数值 并且不是以数字开头 php自动转换为 0; 打印结果 为 0 + 10 = 10;
echo $age + 10,’<br />‘;
// 两个数值类型相加 得到结果 18 + 10 = 28
echo $t + 10,’<br>‘;
// php内部将 布尔值类型 true 转换成 1 得到结果为 1 + 10 = 11
echo $f + 10,’<br>‘;
// php 内部将 布尔值false转换成0 得到结果 0 + 10 == 10
echo $g + 10,’<br>‘;
// 首先警告 ‘5g’为字符串 但首位是由5开头 所以将 5g 转成了5 得到结果 5 + 10 = 15
echo $g1 + 10,’<br />‘;
// 首位为 g php不会将 g5转换成数字 所以的到 0 + 10 = 10;
echo $ph . 15;
// php 字符串拼接 将15装换成’15’ ‘php’ + ‘15’ = php15
> 强制转换:
1. 临时转换 (转换类型)变量 (int,string...) 但这种转换是临时转换的 变量本身并没有变化数据类型
2. 永久转换 settype() settype(变量,转换类型); 这种装换会将变量类型永久改变
```php
// 临时转换
$str1 = 'admin';
var_dump((int)($str1));
// int(0) 将字符串'admin' 强制转换成整数类型
var_dump((bool) "");
// 将空字符串转换成布尔值 false
echo (int)$name + 10,'<br />';
// 将字符串先转成数值 再和数值进行运算
echo (int)$name + 10,'<br />';
// 使用 intval()强制转换
echo intval($name) + 20,'<br />';
// 打印结果 仍然是 string
echo gettype($name),'<br>';
// 永久转换 settype()
settype($var,$type);
// $var:要转换的变量;
// $type:可能要转换的数据类型 (integer,float,string,array,object,boolean,null);
$foo = '5bar';
settype($foo,"integer");
var_dump($foo);
$nums = 15;
settype($nums,"string");
var_dump($nums);