什么是PHP的常量
1.常量是一种特殊的变量, 仅允许初始化一次, 不允许更新, 可以理解为只读变量
2.常量没有作用域限制, 在编程的时候非常有用, 经常用来表示状态, 或数据共享
3.常量不是变量, 不需要$
, 但是常量名仍然要遵守PHP标识符的命名规范(英文, 数字或下划线组成,并且不能以数字开始)
4.常量: 推荐用大写字母
PHP常量的创建方法
1.常量的创建:
- 函数:
define()
//define()创建常量
define('WEB_NAME','网站名称');
- 指令:
const
//const 创建常量
const WEB_URL = 'php.cn';
echo WEB_URL,'<br>';
2.两种方法的区别:
1.相同:都可以定义常量
2.不同之处: define()
可以使用表达式做为值, 而const
中能用字面量
3.const
:可以创建类常量,define()
不能创建类常量
单引号与双引号
1.单引号: 内部的值,按字面量的形式进行处理
单引号中的内容会原样输出,不解析内部的变量和特殊字符
$name = 'PHP中文网';
// \t为TAB的写法,相当于四个空格
echo '$name\t的值是\t$name <br>';
2.双引号: 内部的值, 将被解析,如果值是变量名或者特殊字符,会被解析出来
echo '<hr>';
//不希望某个变量被解析, 可以在他的前面添加转义字符 \
echo "\$name\t的值是\t$name <br>";
3.如何在字符串中输出转义字符(反斜杠)
// 如何在字符串中输出转义字符
echo "\\$name", '<br>';
4.双引号中的变量标识符,如果与其它字符串连接在一起会引起解析错误
解决方法是用{}
包住变量名称(下面两种包法都行,建议使用第一种)
echo "\$name\t的值是\t${name}aaa <br>";
echo "\$name\t的值是\t{$name}bbc <br>";
索引数组和关联数组
1.索引数组:键名采用数值, 访问时依赖于元素在数组中的键名位置
1.1索引数组的创建:
逐个添加: 将每一个元素,通过赋值的方式, 直接添加/追加到数组中$arr = [0=>1,1=>2,2=>3,3=>4];
$arr[0] = 1;
$arr[1] = 2;
$arr[2] = 3;
$arr[3] = 4;
如果键名数值是连续的,键名可以省略
$arr[] = 1;
$arr[] = 2;
$arr[] = 3;
$arr[] = 4;
$arr = [1,2,3,4];
1.2查看索引数组元素
//指定键值创建
$user[0] = 30;
$user[1] = 'xiao wang';
$user[2] = '安徽省';
echo '<pre>' . print_r($user, true) . '</pre>';
1.3如果想获取到变量或数组元素的更多信息,可以使用var_dump()
var_dump($users1, $users2, $users3);
1.4索引数组的遍历
foreach ($user as $i) {
echo $i , '<br>';
}
1.5数组元素与变量之间的转换
// 数组元素与变量之间的转换, 常用于mvc模板赋值
//指定键值创建
$user[0] = 30;
$user[1] = 'xiao wang';
$user[2] = '安徽省';
// list()它不是函数,是语言结构,与echo类似
// 函数是绝对不允许放在等号左边接受赋值
list($id, $name, $add) = $user;
echo "id=>$id, name=>$name, add=>$add <br>";
1.6将索引数组转为字符串
// 将索引数组转为字符串: 拉平一个数组, 存储到数据表
$str = implode('====', $user);
echo gettype($str), ' : ', $str, '<br>';
1.7将一个字符串,再转换成索引数组
$str = '30====xiao wang====安徽省';
$arr = explode('====', $str);
echo '<pre>' . print_r($arr, true) . '</pre>';
2.关联数组:键名采用字符串,键名必须符合PHP标识符的命名规范,访问时不再依赖于元素在数组中的位置$stu = ['id'=>101, 'name'=>'小胖', 'course'=>'php']
2.1关联数组的遍历同索引数组使用foreach()
遍历
$user['年龄'] = 30;
$user['姓名'] = 'xiao wang';
$user['地址'] = '安徽省';
foreach ($user as $value) {
echo $value , '<br>';
}
2.2关联数组的遍历(带键名)
foreach ($user as $key=>$value) {
echo "['$key'] => $value <br>";
}
2.3关联数组与变量之间的转换
// 字面量方式创建
$user = ['id'=>30, 'name'=> 'xiao wang', 'add'=>'安徽省'];
extract($user);
// $id=105; $name='电脑';$price=9000;
echo "id=>$id, name=>$name, add=>$add <br>";
2.4将独立的变量, 组装成一个关联数组
$id = 30;
$name = 'xiao wang';
$add = '安徽省';
$linkParams = compact('id', 'name', 'add');
echo '<pre>' . print_r($linkParams, true) . '</pre>';
2.5将关联数组转为索引数组
// 字面量方式创建
$user = ['id'=>30, 'name'=> 'xiao wang', 'add'=>'安徽省'];
// 将关联数组转为索引数组
$indexArr = array_values($user);
echo '<pre>' . print_r($indexArr, true) . '</pre>';
多维数组
1.由数组当成数组元素使用,组合成的一个多维数组
(数组元素, 除了可以是原始类型, 也可以还是一个数组, 这时就形成了多维数组)
2.从数据表中的读取的记录, php会转为二维数组, 日常开发, 二维数组用得最多
$users = [
['id'=> 101, 'name'=> '小王', 'grade'=> 88],
['id'=> 102, 'name'=> '小张', 'grade'=> 78],
['id'=> 103, 'name'=> '小李', 'grade'=> 68],
];
// 访问
//echo $users[1]['name'], '<br>';
foreach ($users as $user) {
//print_r($user);echo '<hr>';
echo "id=>${user['id']}, name=>${user['name']}, price=>${user['grade']} <br>";
}
流程控制之分支
单分支
// 流程控制之分支
// 1 单分支
//会员组折扣率例子
//金牌会员打7折,银牌会员打8折,铜牌会员打9折,普通会员不打折(默认会员组)
$group_jin = 0.7;
$group_yin = 0.8;
$group_tong = 0.9;
// 商品价格
$price = 500;
//应付金额
$total = 0;
if ($group_jin) {
//当前会员组为金牌会员打7折
$user_group = $group_jin;
// 运算
$total = $user_group * $price;
// 输出
echo "应付金额:$total <hr>";
双分支
// 2. 双分支
//购买商品达到一定金额后给予一定的折扣率
////应付金额
$total = 0;
// 折扣率
$discount = 1;
//// 金额
$price = 500;
//购买金额500-1000元打8折,否则不打折
if ($price >= 500 && $price < 1000) {
$discount = 0.8;
$total = $discount * $price;
echo "应付金额:$total <hr>";
} else {
$discount = 1;
echo "应付金额:$total <hr>";
}
多分支
// 3. 多分支
//购买商品达到一定金额后给予一定的折扣率
////应付金额
$total = 0;
// 折扣率
$discount = 1;
//// 金额
$price = 2000;
//购买金额500-1000元打8折,1000-2000元时打7折,否则不打折
if ($price >= 500 && $price < 1000) {
$discount = 0.8;
$total = $discount * $price;
echo "应付金额:$total <hr>";
} elseif ($price >= 1000 && $price <= 2000) {
$discount = 0.7;
$total = $discount * $price;
echo "应付金额:$total <hr>";
} else {
$discount = 1;
echo "应付金额:$total <hr>";
}
switch()
, 简化多分支
// 3. 简化分支
//购买商品达到一定金额后给予一定的折扣率
////应付金额
$total = 0;
// 默认折扣率
$discount = 1;
//// 金额
$price = 2000;
// 当前指定折扣率
$discount = 0.8;
switch ($discount) {
case 0.8:
$total = $price * 0.8;
break;
case 0.7:
$total = $price * 0.7;
break;
default:
// default为默认;
// 程序中止
exit('不支持的折扣率');
}
echo "应付金额: $total<hr>";