while和for循环
// 1.循环:计算循环
// while
$int = 1;
//()里呢 是条件:> >= < < =
// == ===
// 死循环
// 1 < 10 永远是对的,是true真
// 给它停止的一个条件,1<10这个条件呢,我们要让它有机会结束
// while($int < 10){
// 这里也是代码,什么代码都可以在这里面写,foreach、if条件、正常的代码、
echo '第'. $int .'次';
echo '<hr>';
$int++;
}
输出:第1次
第2次
第3次
第4次
第5次
第6次
第7次
第8次
第9次
// 2.2 do while
// {}是代码 ()是条件
// do while 和 while 的区别是 do while 会先执行一遍
$int = 1 ;
do{
echo '第'.$int.'次';
echo '<hr>';
$int++;
}while($int<10);
输出结果和1.的输出效果一样的
// 3.3for 循环 也是计算循环
// {}代码 ()条件
// 和 while 有一点不一样 ()里不止一条语句 它里面有三条
for($int = 1; $int < 10; $int++){
echo '第'.$int.'次';
echo'<hr>';
}
// 3.4 结束命令 break
for($int = 1; $int < 10 ; $int++){
echo '第'.$int.'次';
echo '<hr>';
// 在{}里能写任何代码
// if( $int == 5 ){ 输出:1-5次
if( isset($_GET['num']) && $int == $_GET['num'] ){
break;
}
}
// break 可以在 switch 里使用
// 3.5 continue 其中一条数据,不输出
// for($int = 1; $int < 10 ; $int++){
if(isset($_GET['num']) && $int == $_GET['num'] ){
continue;
}
echo '第' . $int . '次';
echo '<hr>';
}
// http://www.163.com/6.php?num=2 num输入多少 那个数字就不输出
?>
<!-- <!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>
<table border="1"> -->
<?php
for ($i=1; $i <10 ; $i++) {
echo '<td>二郎神'.$i.'</td>';
重复输出名字
}
?>
<!-- </table>
</body>
</html> -->
<?
// 3.6 随机数.函数
// echo mt_rand(0,99); //随机0-99的函数
?>
<!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> -->
<?php
$a = mt_rand(0,255);
$b = mt_rand(0,255);
$c = mt_rand(0,255);
echo $a . '-' . $b . '-' . $c;
$code = mt_rand(0,9) . mt_rand(0,9). mt_rand(0,9). mt_rand(0,9);
$code = '0123456789abcdefghijklmnopqrstuvwsyz';
// 计算字符串长度
// 用strlen来计算 code的长度
echo strlen($code);
$num1 = $code[mt_rand(0,strlen($code)-1)]; //只能是数字
$num2 = $code[mt_rand(0,strlen($code)-1)];
$num3 = $code[mt_rand(0,strlen($code)-1)];
$num4 = $code[mt_rand(0,strlen($code)-1)];
$num = mt_rand(0,strlen($code)-1);
echo $code[$num]; //获取字符串里的单个数据
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 ?> )"><?=$num1?><?=$num2?><?=$num3?><?=$num4?></span> -->
<!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>
<?php
echo '<table border="1">';
for($i=1;$i<=9;$i++){
echo '<tr>';
// y 如果小于等于9,那就说明y,第一次、第二次、第N次,都要执行9次
// y 要小于等于,它的上司,i 是1,y是1,他俩一样的话,就执行1次
// i是2,y重新被赋值为1,在找它上司,i是2,他俩一样的话,就执行2次
for($y=1; $y<=$i; $y++){
echo ' <td>';
echo $y;
echo '*';
echo $i;
echo '=';
echo $i * $y; //这是结果
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
?>
<?php
//乘法口诀反过来
echo '<table border="1">';
for($i=9;$i>=1;$i--){
//如果是大数字在前面,后面要--
echo '<tr>';
for($y=1; $y<=$i; $y++){
echo ' <td>';
echo $y;
echo '*';
echo $i;
echo '=';
echo $i * $y; //这是结果
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
// 抓取和日志用for循环
//乘法口诀表就忽略了
</table> -->
</body>
</html>
输出:
post提交与curl网络请求
<?php
// 1、超级全局变量
// $_GET 网址上显示出来,在浏览器的收藏里使用,很方便
// $_POST 不显示传值内容,这样做,更安全
// $_COOKIE、$SESSION 缓存,保存用户信息
// $_FILES 文件上传信息
// get 如果传值 能让对方看到,就可以用get
// post 一般用在 账号、密码、支付密码、加密的东西,不能其他人看到的
// $_REQUEST,一维数组:包含了$_POST、$_GET、$_COOKIE
// 要注意 post 和 get 和 cookie 会出现重复的下标
?>
<!-- <!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;
// 把get 换成post
// }
// $GLOBALS 全部全局变量的组合,二维数组
// print_r($GLOBALS);
// print_r($_SERVER); //服务器的环境,会使用里面的下标是时间戳,也会有函数获取时间戳
// print_r($_ENV); 也是环境变量
// 预定义常量
// echo __FILE__; // 当前文件
// echo __DIR__; //当前目录
// echo PHP_VERSION; //后台管理程序,显示在后台首页
// 2.网络请求
// file() 把整个文件读入到一个数组中
// print_r( file('http://apis.juhe.cn/simpleWeather/query') );
// 6-5 7:01
// echo file_get_contents( 'http://apis.juhe.cn/simpleWeather/query' );
// 但是是读取到字符串中
// 我们的需求,是需要网络请求的。
// 我们就算不抓取别人的数据,也会用到别人的接口
// 比如说,微信支付,用到微信支付,就需要用别人提供的接口
// 只要用第三方的功能,别人提供接口的话,我们就需要用网络请求
// Curl 网络请求,因为它能请求post
// $ch = curl_init(); // 创建一个curl,它一直存在在这里
// // 要配置很多项。可以直接网上搜一个
// // curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=合肥');
// curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query');
$data = [
'key' => 'abc4b64ae7656b460723402175a5650b',
'city' => '合肥'
];
curl_setopt($ch, CURLOPT_POST, 1); // 这个请求是post
curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
$html = curl_exec($ch); // 去执行curl
function get_url($url,$data,$is_post=0){
$ch = curl_init(); // 创建一个curl,它一直存在在这里
// 要配置很多项。可以直接网上搜一个
curl_setopt($ch, CURLOPT_URL ,'http://apis.juhe.cn/simpleWeather/query?key=abc4b64ae7656b460723402175a5650b&city=合肥');
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
if($is_post == 1){
curl_setopt($ch, CURLOPT_POST, 1); // 这个请求是post
curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
}
$html = curl_exec($ch); // 去执行curl,并且打印出来,但是如果关闭了,就不会打印出来
if(curl_errno($ch)){
return curl_errno($ch);
}
curl_close($ch);
return $html;
}
$data = [
'key' => 'abc4b64ae7656b460723402175a5650b',
'city' => '合肥'
];
echo get_url('http://apis.juhe.cn/simpleWeather/query',$data);
?>