No.2 php入门(二)
php判断和循环
php的判断和循环和C/C++用法基本一致。不过多赘述
php数组
1、函数count(+数组)计算数组元素数量,
2、php中关联数组是指使用分配给数组指定的键的数组。在php中用关联数组替代哈希表的实现,更易实现其查找。
3、php数组默认为关联数组,普通数组必须经过严格的定义(必须连续且按顺序进行赋值)
$arr = array();
$arr[0] = 'a';
$arr[1] = 'b';
$arr[2] = 'c';
4、关联数组的遍历:
在关联数组中,使用foreach函数循环遍历关联数组,foreach($array as $x=>$x_value){ }
5、php数组的排序
(1)算法排序:冒泡、选择、快速
(2)函数排序(sort系列函数),详见Array手册(排序函数会生成一个新的排过序的数组取代之前的数组,可直接访问) 来自菜鸟教程的PHP Array手册https://www.runoob.com/php/php-ref-array.html
php超级全局变量
有几个常用的超级全局变量,我只对其中几个做一些重点批注
1、$_SERVER[' '] 本质上是一个包含了web服务器的各种信息的数组,一般由web服务器直接生成,可以使用访问相关数组的方式直接访问。可以查询到诸如服务器ip、浏览器内核等信息,可以利用该函数迅速判断访问请求并即时截断敏感用户
2、$_GET[' 变量名 '] 收集表单数据,在html中表单中需要指定属性 method="get",可以将前端页面传到后端页面,get型和post型传值的区别是get型是明文传值,post型是不显示明文传值同样需要指定属性 method="post",php端接受$_POST[' 变量名 ']
3、$GLOBALS[' $变量 '] 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。能使一个变量在一个PHP脚本的全部作用域中都可以访问
php重要的函数
在php中,提供了超过 1000 个内建的函数。详情请见php函数手册https://www.php.net/manual/zh/funcref.php
以下例举几个常见函数
1、phpinfo() 测试网站能否执行php,即为运行函数过程并解析,能显示php所有相关信息,通常用来debug,在网络安全领域,一个网站的phpinfo被人读取到是比较危险的,有数据泄露的风险
2、eval(" 可计算的两个变量 ") 用来执行一个字符串表达式并返回表达式的值
3、system(" 系统命令 ") 用来执行系统命令,高危函数,谨慎使用,
php魔术常量
随着在php代码中位置的不同而改变的常量,在
1、_LINE_ 显示此时位于代码段第几行
2、_FILE_ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
3、_CLASS_ 返回该类被定义时的名字
类似的魔术常量还有5个,此处不一一例举了。
总结
学习了这么久,让我们用简单的条件语句写一个猜大小的小游戏吧。
需求:生成一个随机数,我们在前端界面猜测该数的大小,通过简单的if语句确定其范围,最后就能猜中啦。
<?php
$num=$_GET["num1"];
$rand=$_GET["rand"];
if ($rand==null) //清空上面的内容重新开始吧
{
$rand=rand(10,99);
}
//判断开始
if($num==null){
$a = null;
}elseif($num>$rand){
$a = "你输入的值太大了";
}elseif($num<$rand){
$a = "你输入的值太小了";
}else{
$a = '<script>alert("恭喜你,猜对了");</script>';
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="" method="get">
<input type="password" name="rand" value=<?php echo $rand;?>> <!--从后端生成一个随机数传送到前端以密文的形式输出显示-->
<h2>清空上面的内容,即可重新开始游戏</h2>
</br>
<h1>猜猜我的数字是多少,范围10-99</h1>
猜数字<input type="number" name="num1" value=<?php echo $num;?>> <!--value作用,保持标签内的值始终不被刷新-->
<input type="submit" value="计算">
<?php echo $a;?>
</br>
</form>
</body>
</html>
来看看结果吧
让我们用简单的for循环对我们刚刚写的猜数字游戏进行一个爆破实验吧
<?php
$rand=$_GET["rand"];
if ($rand==null){
$rand=rand(10,99);
}
//for循环爆破
for ($num=0;$num<=$rand;$num++){
echo "正在爆破".$num;
$a="爆破成功,结果为".$num;
}
$num=0;
while ($num<=$rand){
echo "正在爆破".$num;
$a="爆破成功,结果为".$num;
$num++;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<form action="" method="get">
<input type="password" name="rand" value=<?php echo $rand;?>>
<h2>清空上面的内容,即可重新开始游戏</h2>
</br>
<h1>猜猜我的数字是多少,范围10-99</h1>
<input type="submit" value="点击开始自动爆破">
<?php echo $a;?>
</br>
</form>
</body>
</html>
来看看结果吧
刚刚测试完才发现犯了一个很傻的问题,那就是我在生成随机数的时候使用的表单传值方式不妥,导致其实我生成的随机数是可以直接看到的,让我们回顾全文,看看该怎么改吧......算了我懒得改了,留待有缘人帮我改吧。