博客列表 >PHP流程控制与函数(流程控制语句 for foreach while if 流程控制语句替代语法 函数的声明 调用 参数 匿名函数 函数表达式 函数封装 iframe)2019年2月21日

PHP流程控制与函数(流程控制语句 for foreach while if 流程控制语句替代语法 函数的声明 调用 参数 匿名函数 函数表达式 函数封装 iframe)2019年2月21日

小明的博客
小明的博客原创
2019年03月03日 08:45:34788浏览

今晚只要学习了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


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