Blogger Information
Blog 42
fans 2
comment 0
visits 54204
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP流程控制与函数(流程控制语句 for foreach while if 流程控制语句替代语法 函数的声明 调用 参数 匿名函数 函数表达式 函数封装 iframe)2019年2月21日
小明的博客
Original
795 people have browsed it

今晚只要学习了PHP流程控制  函数  函数封装   iframe  ,作业是使用foreach/if替代语法循环遍历二维数组;制作:员工管理系统后台首页。

一、流程控制语句

在日常开发中,数据来自数据库,通常以二维数组的形式传送过来,我们通常用foreach变量关联数组。想把数据呈现出来,一般通过遍历化解成一维数组,然后再通过数组的键来得到值。具体代码可以看作业1。当然,流程控制不止有遍历,还有判断,例如if switch。

二、流程控制语句的替代语法

替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成   endif;,endwhile;,endfor;,endforeach;   以及 endswitch;。 个人认为,这种简写形式能够不破坏原有代码结构,方便修改。

三元运算符也是一种替代语法,它相当于if else语句的简写。形如:判断条件语句?条件为true的执行语句:条件为false的执行语句;

三、函数

函数的声明和调用同js一样。

函数可以调用参数,参数有默认参数和可选参数之分。例如:function demo02($a, $b= 50)  $b为默认参数,他必须再必选参数($a)的后面;再函数调用时$b就是可选参数 如果只填入一个必须参数那么就是默认值50,如果填入那么就是用户自定义的值;

可变参数,就是声明时不固定设置参数,通过遍历来实现,func_num_args()获取函数的参数数量,func_get_args()获取函数参数的值的列表 func_get_arg()获取参数值列表相应索引的值。代码看下面分享的课程代码。

匿名函数,他是一种临时函数,主要用作函数回调参数的值。

函数表达式,通俗的来说一个变量的值为函数,那么这个变量就是函数表达式。匿名函数的一个使用场景就是作为表达式的参数值回调使用。call_user_func()/call_user_func_array()可以以回调方式执行一个函数。

四、函数封装

用一个案例来说明。

实例

<?php

// 员工信息
$staffs = [
    ['id'=>1, 'name'=>'候亮平', 'age'=>30, 'sex'=>1, 'email'=>'hlp@php.cn', 'password'=>sha1('123456')],
    ['id'=>2, 'name'=>'赵瑞龙', 'age'=>40, 'sex'=>1, 'email'=>'zrl@php.cn', 'password'=>sha1('123456')],
    ['id'=>3, 'name'=>'李达康', 'age'=>50, 'sex'=>1, 'email'=>'ldk@php.cn', 'password'=>sha1('123456')],
    ['id'=>4, 'name'=>'祁同伟', 'age'=>45, 'sex'=>1, 'email'=>'qtw@php.cn', 'password'=>sha1('123456')],
    ['id'=>5, 'name'=>'高小琴', 'age'=>30, 'sex'=>0, 'email'=>'gxq@php.cn', 'password'=>sha1('123456')],
];

// 标题
$title = '用户信息表';

// 表格标题
$tableTitle = $title;

// 员工数量
$total = count($staffs);


// 创建函数: 动态生成员工表格
// 函数参数: 表格数据(数组)
function createTable($staffs)
{
    $result = '';
    foreach ($staffs as $staff)
    {
        $result .= '<tr>';
        $result .= '<td>' . $staff['id'] . '</td>';
        $result .= '<td>' . $staff['name'] . '</td>';
        $result .= '<td>' . $staff['age'] . '</td>';
        $result .= '<td>' . ($staff['sex'] ? '男' : '女') . '</td>';
        $result .= '<td>' . $staff['email'] . '</td>';
        $result .= '<td>' . $staff['password'] . '</td>';
        $result .= '</tr>';

    }
    return $result;
}


?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><?php echo $title; ?></title>
    <style>
        table,th,td {
            border: 1px solid #666;
            padding: 8px;
        }
        table {
            border-collapse: collapse;
            width: 80%;
            text-align: center;
            margin: 30px auto;
        }
        thead tr:first-of-type {
            background-color: lightblue;
        }
        table > caption {
            font-size: 1.2rem;
            margin-bottom: 15px;
        }
        table + p {
            text-align: center;
        }
    </style>
</head>
<body>
<table>
    <caption>
        <?php
        echo '<span style="color:red">' . $tableTitle . '</span>';
        ?>
    </caption>
    <thead>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>邮箱</th>
        <th>密码</th>
    </tr>
    </thead>
    <tbody>
    <?php echo createTable($staffs); ?>
    </tbody>
</table>
<p>总计:
    <?php echo $total;  ?>
    人</p>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


五、课程代码及作业代码

课程:

实例

<?php
//    函数声明
function demo1 ($a, $b) {
    return "{$a} + {$b} =".($a + $b);
}
echo demo1(10, 20);
echo '<br>';

//    可选参数 | 默认参数
//    默认参数必须是第二个
function demo2 ($a, $b=90) {
    return "{$a} + {$b} =".($a + $b);
}
echo demo2(10);
echo '<br>';
echo demo2(40, 60);
echo '<br>';

//    可变参数
//    func_get_args()  获取参数列表数组
//    func_get_arg(n)  获取参数列表中某一元素
//    func_num_args()   获取元素的数量
function demo3() {
    $sum = 0;
    for ($i=0; $i<func_num_args(); $i++) {
        $sum += func_get_arg($i);
    }
//    拼装参数相加的表达式字符
    $equ = '';
    foreach (func_get_args() as $value) {
        $equ .= $value . '+';
    }
//    删除最后一个+
    $equ = rtrim($equ, '+');
//    返回最后想要的算数表达式
    return $equ .'='.$sum;

}
echo demo3(10, 20, 40);
echo '<br>';
echo demo3(10, 20, 40, 90, 150);
echo '<br>';

//    匿名函数
//    函数的参数可以是一个匿名函数  这个匿名函数就是当前函数的回调参数
//    array_map(callback, array)通过回调函数设置的规则对指定数组中的所有元素操作
$arr = range(0,9);
$new = array_map(function($par){
    return $par % 2 != 0 ? $par : null;
}, $arr);
$filterArr = array_filter($new, function ($par) {
    return $par ?:false;
});
print_r($new);
echo '<br>';
print_r($filterArr);
echo '<br>';

//    函数表达式
//    如果一个变量的值是函数,那么这个变量就是函数表达式
//    匿名函数还有一个重要的作用就是当函数表达式的值
$sum = function ($a, $b) {
    return "{$a} + {$b} =".($a + $b);
};
echo $sum(10, 20);
echo '<br>';
//    函数表达式最多的用来做函数的回调参数来用
//    call_user_func() 和 call_user_func_array()都可以用回调的方式来执行一个函数表达式
echo call_user_func($sum, 10, 90);
echo '<br>';
echo call_user_func_array($sum, [10,90]);

运行实例 »

点击 "运行实例" 按钮查看在线实例

作业:

实例

<?php
//    初始化变量
    $title = '员工信息查询表';
    $tableTitle = $title;
    $total = 5;
//    初始化二维数组
    $array = [
        ['id'=>1, 'name'=>'候亮平', 'age'=>30, 'sex'=>1, 'email'=>'hlp@php.cn', 'password'=>sha1('123456')],
        ['id'=>2, 'name'=>'赵瑞龙', 'age'=>40, 'sex'=>1, 'email'=>'zrl@php.cn', 'password'=>sha1('123456')],
        ['id'=>3, 'name'=>'李达康', 'age'=>50, 'sex'=>1, 'email'=>'ldk@php.cn', 'password'=>sha1('123456')],
        ['id'=>4, 'name'=>'祁同伟', 'age'=>45, 'sex'=>1, 'email'=>'qtw@php.cn', 'password'=>sha1('123456')],
        ['id'=>5, 'name'=>'高小琴', 'age'=>30, 'sex'=>0, 'email'=>'gxq@php.cn', 'password'=>sha1('123456')],
    ];
?>
<!--php与html混编-->
<!--使用php标签,将php代码直接嵌入到html代码中-->
<!--php标签可以写在html文档的任何地方-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title><?php echo $title; ?></title>
    <style>
        table,th,td {
            border: 1px solid #666;
            padding: 8px;
        }
        table {
            border-collapse: collapse;
            width: 80%;
            text-align: center;
            margin: 30px auto;
        }
        thead tr:first-of-type {
            background-color: lightblue;
        }

        tbody tr:hover {
            background-color: #efefef;
        }

        table > caption {
            font-size: 1.2rem;
            margin-bottom: 15px;
        }
        table + p {
            text-align: center;
        }
    </style>
</head>
<body>
<table>
    <caption><?='<span style="color:red">'.$tableTitle.'</span>'; ?></caption>
    <thead>
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>性别</th>
        <th>邮箱</th>
        <th>密码</th>
    </tr>
    </thead>
    <tbody>
    <!-- 用foreach循环遍历二维数组输出  -->
   <?php
//      初始化content
        $content = '';
        foreach ($array as $staff) {
            $content .= '<tr>';
            $content .= '<td>'.$staff['id'].'</td>';
            $content .= '<td>'.$staff['name'].'</td>';
            $content .= '<td>'.$staff['age'].'</td>';

            $content .= "<td>{$staff['sex']}</td>";
            $content .= "<td>{$staff['email']}</td>";
            $content .= "<td>{$staff['password']}</td>";
            $content .= '</tr>';
        }
        echo $content;
////

    ?>
<!--    foreach的简便x写法  -->
<!--    --><?php //foreach ($array as $staff) : ?>
<!--        <tr>-->
<!--            <td>--><?//=$staff['id']?><!--</td>-->
<!--            <td>--><?//=$staff['name']?><!--</td>-->
<!--            <td>--><?//=$staff['age']?><!--</td>-->
<!--            <td>--><?//=$staff['sex']===1 ? '男' : '女'?><!--</td>-->
<!--            <td>--><?//=$staff['email']?><!--</td>-->
<!--            <td>--><?//=$staff['password']?><!--</td>-->
<!--        </tr>-->
<!--    --><?php //endforeach; ?>
    </tbody>
</table>
<p>总计: <?= $total ?>人</p>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>瑾瑜网络  员工管理系统</title>

<link href="css/bootstrap.min.css" rel="stylesheet">

<link href="css/styles.css" rel="stylesheet">



</head>

<body>
	<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
		<div class="container-fluid">
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#sidebar-collapse">
					<span class="sr-only">Toggle navigation</span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
				</button>
				<a class="navbar-brand" href="index.php"><span>瑾瑜</span>网络</a>
				<ul class="user-menu">
					<li class="dropdown pull-right">
						<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span> User <span class="caret"></span></a>
						<!--<ul class="dropdown-menu" role="menu">-->
							<!--<li><a href="#"><span class="glyphicon glyphicon-user"></span> Profile</a></li>-->
							<!--<li><a href="#"><span class="glyphicon glyphicon-cog"></span> Settings</a></li>-->
							<!--<li><a href="#"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li>-->
						<!--</ul>-->
					</li>
				</ul>
			</div>
		</div><!-- /.container-fluid -->
	</nav>
		
	<div id="sidebar-collapse" class="col-sm-3 col-lg-2 sidebar">
		<form role="search">
			<div class="form-group">
				<input type="text" class="form-control" placeholder="搜索">
			</div>
		</form>
		<ul class="nav menu">
			<li class="active"><a href="staff_list.php" target="workspace"><span class="glyphicon glyphicon-dashboard"></span> 员工管理</a></li>
			<li><a href="system.php" target="workspace"><span class="glyphicon glyphicon-th"></span> 系统设置</a></li>
			<li><a href="user_list.php" target="workspace"><span class="glyphicon glyphicon-stats"></span> 用户设置</a></li>



		</ul>
		<div class="attribution">版权所有 <a href="#" target="_blank" title="瑾瑜网络">@ 瑾瑜网络</a></div>
	</div><!--/.sidebar-->
		
	<div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2 main">			
		<iframe src="staff_list.php" name="workspace" class="workspace"></iframe>

	</div>	<!--/.main-->


</body>

</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

总结:

1、流程控制语句是任何编程的重要组成部分,php中重要的是可以同html混编,那么上述的流程控制的替代写法就带来了极大的方便。再手册查阅中 elseif  和else if之间是有区别的,elseif 与 else if    只有在类似上例中使用花括号的情况下才认为是完全相同。如果用冒号来定义    if/elseif 条件,那就不能用两个单词的    else if,否则 PHP 会产生解析错误。   

2、函数的参数中可选参数也就是声明的默认参数必须再必选的后面;

3、iframe框架,必须设置name,然后再a的target中相应设置该name


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments