Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:没关系的, 学习都是从模仿开始的, 只要不放弃,坚持下去, 肯定会有收获的
define()
const
<?php
// 先用define和const定义常量
define('MY_NAME', 'xiaocheng');
const MY_class='0109';
// 输出这两个常量
echo MY_NAME , '<br>', MY_class, '<br>';
// 下面比较不同之处
class A
{
// const:可以创建类常量
const NATION = 'CHINA';
// define() 不能创建类常量,创建就会出错
// define('USER_NAME', 'admin');
}
echo A::NATION, '<br>';
// define()定义的常量允许使用表达式做为值,而const只能用字面量
$domain = '@qq.com';
define('MY_EMAIL', '1446582' . $domain);
echo MY_EMAIL, '<br>';
// const NEW_EMAIL = 'admin@' . $domain;
const NEW_EMAIL = 'admin@php.cn';
echo NEW_EMAIL, '<br>';
<?php
// 单引号与双引号
$name = 'xiaocheng';
echo '$name \t 单引号不解析内部的变量和特殊字符 <br>';
echo "$name\t双引号可以解析内部变量和字符 <br>";
// 在第一个$name前添加转入字符"\",可以使变量不被解析
echo "\$name\t的值是\t$name <br>";
echo "<hr>";
// 如果想在单引号或双引号中引用自身, 也可以使用转义字符,这样单双引号就出来了
echo '$name\t的值是\t\'$name\' <br>';
echo "\$name\t的值是\t\"$name\" <br>";
//两个反斜杠在字符串输出转义字符
echo "\\$name", '<br>';
echo '<hr>';
// 双引号中的变量标识符,如果与其它字符串连接在一起会引起解析错误,去掉\t就会出现错误,效果中不显示错误的值
echo "\$name\t的值是\t${name}hello <br>";
echo "$name\t的值是\t$namehello <br>";
[]
中, 多个元素之间用逗号分隔开$arr = [1,2,3,4]
;`$arr = [0=>1,1=>2,2=>3,3=>4]
;`$stu = ['id'=>101, 'name'=>'小胖', 'course'=>'php']
<?php
// 创建索引数组user1和user2,user3
$users1[0] = 10;
$users1[1] = 'admin';
$users1[2] = 'admin@php.cn';
$users2[] = 10;
$users2[] = 'admin';
$users2[] = 'admin@php.cn';
$users2[] = 'php中文网';
echo gettype($users2);
$users3 = [20, 'jack', 'jack@php.cn'];
// 获取单个数组信息
// echo '<pre>' . print_r($users3, true) . '</pre>';
// 一次性获取多个数组信息
var_dump($users1, $users2, $users3);
echo "<hr>";
// 索引数组的访问与遍历
foreach ($users3 as $item) {
echo $item , '<br>';
}
echo "<hr>";
// 字符串与数组的装换
// 数组元素与变量之间的转换
list($id, $name, $email) = $users3;
// 将索引数组转为字符串: 拉平一个数组, 存储到数据表
$str = implode(',', $users3);
echo gettype($str), ' : ', $str, '<br>';
// $sql = "INSERT `users` SET `comment` = ${str}";
// 将一个字符串转换成索引数组
$str = 'html=css=js=php=laravel';
$arr = explode('=', $str);
echo '<pre>' . print_r($arr, true) . '</pre>';
echo "<hr>";
// 关联数组的创建
$products1['id'] = 100;
$products1['name'] = '手机';
$products1['price'] = 5000;
echo '<pre>' . print_r($products1, true) . '</pre>';
// 字面量方式创建
$products2 = ['id'=>105, 'name'=> '电脑', 'price'=>9000];
// 也用foreach()遍历,只输出键值
foreach ($products2 as $value) {
echo $value , '<br>';
}
// 输出键名,键值
foreach ($products2 as $key=>$value) {
echo "['$key'] => $value <br>";
}
echo "<hr>";
// 关联数组与变量之间的转换
extract($products2);
echo "id=>$id, name=>$name, price=>$price <br>";
echo "<hr>";
// 变量转化成关联数组,变量的创建
$dsn = 'mysql:host=localhost;dbname=php';
$username = 'root';
$password = 'root2';
// 变量的转化,转换成关联数组
$linkParams = compact('dsn', 'username', 'password');
echo '<pre>' . print_r($linkParams, true) . '</pre>';
echo "<hr>";
// 将变量转化成索引数组
function connect(...$linkParams)
{
// 返回的是索引数组
print_r($linkParams);
}
connect($dsn, $username, $password);
echo "<hr>";
// 将关联数组转为索引数组
$indexArr = array_values($products2);
echo '<pre>' . print_r($products2, true) . '</pre>';
echo '<pre>' . print_r($indexArr, true) . '</pre>';
echo "<hr>";
// 3. 多维数组
// 数组元素, 除了可以是原始类型, 也可以还是一个数组, 这时就形成也多维数组
// 从数据表中的读取的记录, php会转为二维数组, 日常开发, 二维数组用得最多
$users = [
['id'=> 101, 'name'=> '小王', 'grade'=> 88],
['id'=> 102, 'name'=> '小张', 'grade'=> 78],
['id'=> 103, 'name'=> '小李', 'grade'=> 68],
];
// 访问,得到结果小张
echo $users[1]['name'], '<br>';
// 遍历查询,输出users数组的内容
foreach ($users as $user) {
// print_r($user);echo '<br>';
echo "id=>${user['id']}, name=>${user['name']}, price=>${user['grade']} <br>";
}
<?php
// 1 单分支
// 购买数量
$count = 11;
// 单价
$price = 99;
// 金额
$total = 0;
// 折扣率
$discount = 1;
// 数量大于十件,小于二十件,打骨折
if ($count >= 10 && $count < 20) {
$discount = 0.01;
}
// 计算金额规则
$total = $count * $price * $discount;
echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
// 2. 双分支,多加了一个条件
// $count = 16;
$count = 3;
// 数量大于十五件,小于二十件,打一折
if ($count >= 15 && $count < 20) {
$discount = 0.1;
// 否则打九九折
} else {
$discount = 0.99;
}
// 计算金额规则,去掉这条的话,总金额会是上面的第一个total
$total = $count * $price * $discount;
echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
// 3. 多分支,三个及以上的判断
// 我选了一个在最后才能判断的值
$count=1.88;
if ($count >= 10 && $count < 20) {
$discount = 0.9;
} elseif ($count >= 20 && $count < 30) {
$discount = 0.8;
} elseif ($count >= 30) {
$discount = 0.7;
} else {
$discount = 1;
}
// 计算金额规则
$total = $count * $price * $discount;
echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
// 4. switch(), 简化多分支
$count = 38;
switch (true) {
// 达成的条件
case $count >= 10 && $count < 20:
//达成条件后的折扣
$discount = 0.9;
break;
case $count >= 20 && $count < 30:
$discount = 0.8;
break;
case $count >= 30:
$discount = 0.7;
break;
// 这些条件都没满足的判断
default:
$discount = 1;
}
$total = $count * $price * $discount;
echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
// switch ()更多应用场景是单值判断
$discount = 0.7;
// 我觉得这种判断方式,适合比较简单的判断,比如在条件确定的情况下
switch ($discount) {
case 1:
$total = $count * $price * 1;
break;
default:
// echo '不支持的折扣率';
// 程序中止
exit('不支持的折扣率');
}
echo "购买数量: $count, 总金额: $total, 折扣率: $discount <hr>";
做的时候比较迷茫,不知道怎样做好这次作业,最后我决定按照老师的案例来一步步做,相似度或许有点高,但是每条我都测试过效果,在代码的部分我加了一些自己的理解,希望老师理解。