一.循环,计算循环
1. while
$int = 1;
()里是条件: > >= < <=
== ===
死循环,而是说这个程序会一直进行下去,一直循环
1<10 永远是对的,true真
给他停止的一个条件,1< 10 这个条件呢,我们要让它有机会结束
while($int < 10){
$int++;
echo '小璐子要睡觉了吗' ;
echo '<hr>';
}
$s2 = (int)20.23;
echo ('hello\\n word')
2.do while
{}是代码 ()条件
$int = 1;
do{
echo '第' . $int . '次';
echo '<hr>';
$int++;
}while($int < 10);
3.1 for 计算
符号千万不能用错
for($int = 1;$int < 10 ;$int++){
echo '第' . $int . '次';
echo '<hr>';
}
3.2 for 结束循环 break
for($int = 1;$int < 10 ;$int++){
echo '第' . $int . '次';
echo '<hr>';
if(!empty($_GET['num']) && $int == $_GET['num']){
break;
}
}
3.3 for 暂停循环 continue
for($int = 1;$int < 10 ;$int++){
if(!empty($_GET['num']) && $int == $_GET['num']){
continue;
}
echo '第' . $int . '次';
echo '<hr>';
}
4. 随机数,函数
echo mt_rand(0,9)
$a = mt_rand(0,255);
$b = mt_rand(0,255);
$c = mt_rand(0,255);
5.随机变色验证码-代码列示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>随机变色验证码</title>
</head>
<body>
<h1>登录验证码</h1>
<?php
$code = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for ($i = 0; $i < 4; $i++) {
echo '<span style="color:rgb(' . mt_rand(0, 255) . ',' . mt_rand(0, 255) . ',' . mt_rand(0, 255) . ')"> ' . $code[mt_rand(0, strlen($code) - 1)] . '</span>';
}
?>
<!-- <span style="color:rgb(<?= $a ?>,<?= $b ?>,<?= $c ?>)"><?= $num ?><?= $num1 ?><?= $num2 ?><?= $num3 ?><br>验证码</span> -->
</body>
</html>
6.九九乘法表-代码列示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=\, initial-scale=1.0">
<title>九九乘法表</title>
</head>
<body>
<?php
//y如果小于等于9 ,那就说明,第一次,第二次,第N次 ,都要执行9次
//y要小于等于,它的上司, i是1,y是1,它俩一样,就执行1次,
//i 是2,y重复被赋值为1,再找它的上司,i是2,他俩一样的话就执行2次
echo '<table border="1">';
for ($i = 1; $i <= 9; $i++) {
echo ' </tr> ';
for ($y = 1; $y <= $i; $y++)
echo '<td>' . $y . '*' . $i . '=' . $i * $y . '</td>';
}
echo '</table>';
?>
</body>
</html>
二、post和Curl
1.超级全局变量
$_GET 网址上显示出来,在浏览器的收藏里使用更方便
$_POST 不显示传值内容,这样做更安全
$_COOKIE $_SESSION 缓存,保存用户信息
get 如果传值 能让对方看到,就可以用get
post 一般用在账号、密码、支付密码,加密的东西,不能让别人看到
$_REQUEST 一维数组, 包含了$_post / $_GET / $_COOKIE
要注意post get 和 cookie 会出现重复的下标
1.1 计算器-代码列示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>计算器</h1>
<form action="" method="post">
<input type="number" name="num1" value="<?= isset($_POST['num1']) ? $_POST['num1'] : ''; ?>" />
<select name="opt">
<option value="+" <?= isset($_POST['opt']) && $_POST['opt'] == '+' ? 'selected' : '' ?>>+</option>
<option value="-" <?= isset($_POST['opt']) && $_POST['opt'] == '-' ? 'selected' : '' ?>>-</option>
<option value="*" <?= isset($_POST['opt']) && $_POST['opt'] == '*' ? 'selected' : '' ?>>*</option>
<option value="/" <?= isset($_POST['opt']) && $_POST['opt'] == '/' ? 'selected' : '' ?>>/</option>
<option value="%" <?= isset($_POST['opt']) && $_POST['opt'] == '%' ? 'selected' : '' ?>>%</option>
</select>
<input type="number" name="num2" value="<?= isset($_POST['num2']) ? $_POST['num2'] : ''; ?>" />
<input type="submit" value="计算" />
</form>
</body>
</html>
<?php
print_r($_REQUEST);
if(!empty($_POST)){
if($_POST['opt'] == '+')
{
$num = (int)$_POST['num1'] + (int)$_POST['num2'];
}else if($_POST['opt'] == '-')
{
$num = (int)$_POST['num1'] - (int)$_POST['num2'];
}else if($_POST['opt'] == '*')
{
$num = (int)$_POST['num1'] * (int)$_POST['num2'];
}else if($_POST['opt'] == '/')
{
$num = (int)$_POST['num1'] / (int)$_POST['num2'];
}else if($_POST['opt'] == '%')
{
$num = (int)$_POST['num1'] % (int)$_POST['num2'];
}
echo '数字1'. $_POST['opt'] . '数字2,结果为:' .$num;
}
?>
1.2 全局变量的组合
<?php
// $GLOBALS 全部全局变量的组合,二维数组
print_r($GLOBALS);
print_r($_SERVER); // 服务器的环境,会使用里面的下标时时间戳
print_r($_ENV);
1.3预定义常量
echo __FILE__ ;// 当前文件
echo __DIR__ ;//当前目录
// echo PHP_VERSION; 后台管理程序,显示在后台首页
2.网络请求/网络抓取
file() 把整个文件读入到一个数组中
echo file_get_contents('http://www.ouyangke.cn');
我们的需求,是需要网络请求的。
我们就算不抓取别人的数据,也会用到别人的接口
比如说,微信支付,用到微信支付,就需要用到别人提供的接口,
只要用第三方的功能,别人提供接口的话,我们就需要用网络请求
echo file_get_contents('http://apis.juhe.cn/simpleWeather/query');
2.1封装网络请求post方式方法
function get_url($url, $data, $is_post = 0)
{
$ch = curl_init(); // 创建一个curl ,它一直存在在这里
//要配置很多项
// get方式接口
// curl_setopt($ch, CURLOPT_URL, 'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=成都');
// post方式接口
if ($is_post == 0) {
if (!empty($data)) {
$url .= '?';
foreach ($data as $k => $v) {
$url .= $k . '=' . $v . '&';
}
}
}
curl_setopt($ch, CURLOPT_URL, $url);
// curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // 在发起连接前等待的时间,如果设置为0,则无限等待。
// curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置cURL允许执行的最长秒数。设置超时限制防止死循环
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 爬取重定向页面
// curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer,防止盗链
// curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 要求结果保存到字符串中还是输出到屏幕上
// curl_setopt($ch, CURLOPT_USERAGENT, 'Data');// 在HTTP请求中包含一个"User-Agent: "头的字符串。
// curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 强制使用 HTTP/1.1
// curl_setopt($ch, CURLOPT_TIMEOUT,30);//设置时间30秒
// curl_setopt($ch, CURLOPT_FOLLOWLOATION,1); //爬取重定向页面
if ($is_post == 1) {
curl_setopt($ch, CURLOPT_POST, 1); // 这是请求是post
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
// 去执行curl ,并且打印出来,但是关闭了就不显示了,要返回
$html = curl_exec($ch);
curl_close($ch); //关闭掉
return $html;
}
$data = [
'key' => 'abc4b64ae7656b460723402175a5650b ',
'city' => '成都'
];
get_url('http://apis.juhe.cn/simpleWeather/query', $data, 1)