博客列表 >PHP的流程控制与计数循环-2019年11月16日

PHP的流程控制与计数循环-2019年11月16日

古城老巷丶
古城老巷丶原创
2019年11月17日 17:25:01802浏览

11月15日作业: 
1. 练习get传值

image.png2. 练习流程控制 (手写)

代码

/**
 * 流程控制
 */
// 三元运算符,判断var变量是否大于60,如果大于60,输出及格,如果没有到60,输出不及格
echo '三元运算符<br>';
$var = 100;
echo $var > 60 ? '及格' : '不及格';
echo '<hr>';
echo 'if判断<br>';
if ($var > 90) {
    # 如果大于90,输出优秀
    echo '优秀';
}
echo '<hr>';
echo 'if else判断<br>';
if ($var > 60) {
    # 判断大于60输出以下代码
    echo '你及格了';
} else {
    # 小于60输出以下代码
    echo '没及格,继续努力';
}
echo '<hr>';

echo 'if elseif else判断<br>';
if ($var > 90) {
    // 大于90输出以下代码
    echo '优秀';
} elseif ($var >= 80) {
    // 输出以下代码
    echo '中等';
} else {
    # 如果都$var没有大于或等于80,则输出以下代码
    echo '一般或不及格';
}
echo '<hr>';
echo 'switch判断<br>';
switch ($var) {
    case $var >= 100: //进行判断
        # 如果大于或等于100,则执行以下代码
        echo '优秀';
        break;
    case $var >= 80: //进行判断
        # 如果大于或等于100,则执行以下代码
        echo '中等秀';
        break;
    case $var <= 60: //进行判断
        # 如果大于或等于100,则执行以下代码
        echo '不及格';
        break;
    default:
        # 默认执行代码
        break;
}

效果:

image.png

手抄:

image.png

3. 练习计数循环 (手写)

代码

<?php
echo '<h2>php 循环<br></h2>';
echo 'while循环<br>';
$int = 1;
/**
 * $int <= 10循环条件,循环次数小于或等于10
 */
while ($int <= 10) {
    echo $int;
    echo '<br/>';
    $int++;
}
echo '<hr>';

echo 'do while循环<br>';
$int = 1;
/**
 * $int <= 10循环条件,循环次数小于或等于10
 */
do {
    #代码执行段
    echo $int;
    echo '<br>';
    $int++;
} while ($int <= 10);
echo '<hr>';

echo 'for循环<br>';
/**
 * $i=0;声明变量$i为0
 * $i <=10;需要执行的次数
 * $i++;$i以累加方式计算,到达$i <=10次数时会停止运行
 */
for ($i = 0; $i <= 10; $i++) {
    # 循环执行代码
    echo $i;
    echo '<br>';
}

image.png

手抄:
image.png


模板:

数据以及头样式

<?php
// 影视剧数组
$movies = [
    [
        'mov_id' => 1,
        'name' => '倚天屠龙记',
        'image' => '1.jpg',
        'detail' => '元朝末年,群雄纷起,武林动荡。江湖传闻,得到屠龙刀倚天剑者,可以成为武林至尊,号令天下,莫敢不从。一时间风云四起,引发了武林中对屠龙刀倚天剑的争夺,几段姻缘和孽缘也由此产生。武当派张翠山与天鹰教殷素素…	',
        'cate_id' => 1
    ],
    [
        'mov_id' => 2,
        'name' => '都挺好',
        'image' => '2.jpg',
        'detail' => ' 苏母的的突然离世打破了这个家庭外表的平静,意想不到的隐患层层显露,对毫无主见却又自私、小气的苏父的安置和后续生活问题,引发了远在国外的大哥与本城的二哥、小妹三家规律生活的不再。一直被苏母压制的苏父翻…	',
        'cate_id' => 1
    ],
    [
        'mov_id' => 3,
        'name' => '如果可以这样爱',
        'image' => '3.jpg',
        'detail' => '一对已婚男女突然徇情自杀,以为可以结束这一切,却不料悲剧才刚刚开始——他们的爱人,耿墨池和白考儿,同时在葬礼上邂逅。面对同样的背叛他们同时选择报复但又同时爱上彼此,注定饱受打击和折磨。然而他们想真心拥…	',
        'cate_id' => 1
    ],
    [
        'mov_id' => 4,
        'name' => '复仇者联盟4',
        'image' => '4.jpg',
        'detail' => '《复仇者联盟4:终局之战》将是漫威宇宙“无限传奇”(The Infinity Saga)的终结篇,是漫威电影宇宙十年的一个重要节点,结束部分英雄电影的故事,但也将展开新的剧情,呈现新的更为广阔宏大的宇…',
        'cate_id' => 2
    ],
    [
        'mov_id' => 5,
        'name' => '波西米亚狂想曲',
        'image' => '5.jpg',
        'detail' => '弗雷迪·默丘里成名前在机场做行李搬运工。有一天,默丘里毛遂自荐加入杰·泰勒与布莱恩·梅的乐团,恰巧当天原本的主唱辞职,默丘里用自己横跨四个八度的超广音域说服两人,从此开启皇后乐团的摇滚传奇!',
        'cate_id' => 2
    ],
    [
        'mov_id' => 6,
        'name' => '阿丽塔:战斗天使',
        'image' => '6.jpg',
        'detail' => '弗雷迪·默丘里成名前在机场做行李搬运工。有一天,默丘里毛遂自荐加入杰·泰勒与布莱恩·梅的乐团,恰巧当天原本的主唱辞职,默丘里用自己横跨四个八度的超广音域说服两人,从此开启皇后乐团的摇滚传奇!',
        'cate_id' => 2
    ],
    [
        'mov_id' => 7,
        'name' => '情书',
        'image' => '7.jpg',
        'detail' => '日本神户某个飘雪的冬日,渡边博子(中山美穗)在前未婚夫藤井树的三周年祭日上又一次悲痛到不能自已。正因为无法抑制住对已逝恋人的思念,渡边博子在其中学同学录里发现“藤井树” 在小樽市读书时的地址时,依循着…',
        'cate_id' => 3
    ],
    [
        'mov_id' => 8,
        'name' => '天空之城',
        'image' => '8.jpg',
        'detail' => '韩书珍将两个女儿的教育问题和对丈夫的贤内助工作都做得井井有条,在天空之城之中也是备受瞩目的女王,但其实书珍一直隐藏着不为人所知的秘密。李秀林是个充满了关怀和情感丰沛的童话作家,在书珍的引导之下成为了天…',
        'cate_id' => 3
    ],
    [
        'mov_id' => 9,
        'name' => '龙猫',
        'image' => '9.jpg',
        'detail' => '为了方便妻子草壁靖子养病,草壁达郎决定带着两个女儿草壁皋月和草壁米搬到草壁靖子所在疗养院附近的乡下,父女三人入住了一间年久失修的老房子。小姐妹俩很快发现看似平凡无奇的乡下有很多神奇的事物,无人居住的房…',
        'cate_id' => 3
    ],
];

// 栏目数组
$cates = [
    ['cate_id' => 1, 'name' => 'gc', 'alias' => '国产好剧'],
    ['cate_id' => 2, 'name' => 'om', 'alias' => '欧美猛片'],
    ['cate_id' => 3, 'name' => 'rh', 'alias' => '日韩新片'],
];

// 网站的系统设置
$system = [
    'sys_id' => 1,
    'title' => '私人影院',
    'desc' => '收集全网最新最全的影视资源',
    'key' => '国产,欧美,日韩',
    'copy' => 'php中文网'
];
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title><?php echo $system['title'] ?></title>
    <link rel="stylesheet" href="static/style.css">
</head>

<body>
    <!--头部导航-->
    <div class="header">
        <ul class="nav">
            <li><a href="index.php">首页</a></li>
            <?php foreach ($cates as $cate) : ?>
                <!-- list.php?cate_id= :点击链接时跳转的页面,?cate_id=:设置get的值 -->
                <!--  //echo $cate['cate_id'] :从上面数组中获取分类的id,通过id来判断是那一条数据-->
                <li><a href="list.php?cate_id=<?php echo $cate['cate_id']; ?>"><?php echo $cate['alias'] ?></a></li>
            <?php endforeach; ?>
        </ul>
    </div>

首页

<!--首页-->
<?php
// 加载公共头部
require_once 'vale/public.php';
// 使用双重循环来遍历二个数组
// 外层遍历栏目数组$cates, 内层根据栏目id来查询对应的影视剧信息
foreach ($cates as $cate) {
    echo "<h2>{$cate['alias']}</h2>";
    echo '<ol>';

    // 遍历影视剧数组
    foreach ($movies as $movie) {
        // 判断当前影视剧所属栏目是否与当前栏目id相同?
        if ($cate['cate_id'] === $movie['cate_id']) {
            echo "<li><a href='detail.php?mov_id=" . $movie['mov_id'] . "'>{$movie['name']}</a></li>";
        }
    }
    echo '</ol>';
}

?>
<!--底部版权-->
<?php
require 'vale/footer.php';
?>

数据列表页

<!-- 列表模板 -->
<?php
require_once 'vale/public.php';
// 将当前栏目id,, 使用GET方式,通过URL地址传递到列表模板list.php
$cate_id = $_GET['cate_id'];

// 注意: url中的内容都是字符串, 整数字符串先做类型转换才可以
//echo gettype($cate_id);die;
$cate_id = intval($cate_id);  // 函数转换

// 将index.php中的主体代码简单修改一下
// 只显示一个栏目, 不需要做循环, 只需要作一个判断即可
foreach ($cates as $cate) {
    // 在index.php基础上加一层判断,确定是否是当前栏目即可
    // 如果上面的GET参数没有做类型转换, 那么这里就不能用===恒等
    // 必须使用==, 以触发系统的类型自动转换机掉, 我还是建议全等操作
    // == : 只比较值是否相等,  === : 值与类型,都必须完全相同
    if ($cate['cate_id'] === $cate_id) {
        // 判断get里的值和类型是否相等
        echo "<h2>{$cate['alias']}</h2>";
        echo '<ol>';
        foreach ($movies as $movie) {
            if ($cate['cate_id'] == $movie['cate_id']) {
                // 判断get获取的ID是否和该条数据的id相等
                echo "<li><a href='detail.php?mov_id=" . $movie['mov_id'] . "'>{$movie['name']}</a></li>";
            }
        }
        echo '</ol>';
        break; // 结束循环
    };
}
require 'vale/footer.php';
?>

数据显示页

<?php
// 加载公共头部
require_once 'vale/public.php';

$mov_id = intval($_GET['mov_id']);

// 复制list.php模板直接修改
foreach ($movies as $movie) {
    if ($movie['mov_id'] === $mov_id) {

        echo "<h3>{$movie['name']}</h3>";
        echo '<img src="/images/' . $movie['image'] . '" alt="" width="300">';
        echo "<p style='text-indent: 2em'>{$movie['detail']}</p>";
    }
};

// 加载公共底部
require 'vale/footer.php';

image.png


总结

流程控制,它是有一个触发机制,当达到触发条件时,会执行触发后的代码。

记数循环,循环之前,必须设置循环的次数,不然无法循环,也要注意循环条件,如果不合理循环条件会导致死循环。

get大部分用在分页和跳转,因为get直接显示传输数据,所以用的比较少

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议