批改状态:合格
老师批语:常量有时会很有用, 尽管不常用
1.常量是一种特殊的变量, 仅允许初始化一次, 不允许更新, 可以理解为只读变量
2.常量没有作用域限制, 在编程的时候非常有用, 经常用来表示状态, 或数据共享
3.常量不是变量, 不需要$, 但是常量名仍然要遵守PHP标识符的命名规范(英文, 数字或下划线组成,并且不能以数字开始)
4.常量: 推荐用大写字母
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>";

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号