学习PHP笔记1

3 篇文章 0 订阅

🌈学习PHP笔记(一)

💠PHP基础

PHP基本语法

标准风格

<?php
// 这里写PHP代码!
代码一;
代码二;	// 每一句的结尾记得加分号
?>

⭕注意:如果一个文件里面全部都是PHP代码,推荐省略结束语句?>

PHP的注释

  • 单行注释
// 注释内容
# 注释内容
  • 多行注释
/*
注释内容
*/

PHP的变量

PHP的变量不用声明就能够直接定义与使用

<?php
$txt="php 在这里";		// 如果是文本信息就使用双引号
$a=5;		// 其他的数字类型的直接声明就好了
$b=10.5;
$c=$a+$b;
?>

⭕变量声明与创建的注意事项

  • 变量必须以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始,不能是数字
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
值传递
<?php
$num1=10;
$num2=$num1;
$num2=20;
echo $num1;
地址传递使用

&表示获取变量的地址

<?php
$num1=10;
$num2=&$num1;
$num2=20;
echo $num1;
销毁变量

只销毁变量名不销毁变量值,变量值由PHP垃圾回收机制销毁(没有变量引用的值就是)

unset(变量名)

PHP函数的写法

<?php

function ([可声明变量,这个可以为空])
{
	// 函数的内容
} 
[函数名]([可声明的变量值,这个可以为空]);

?>

PHP的输出函数

echo函数和print函数,它们是作用基本上相同,用法也都差不多,只能输出数值跟字符串

echo函数
<?php
echo "<h2>我这里可以放HTML句子</h2>";
echo "By ERHE.GROUP<br>";
echo "HTML中的转义符正常用<br>";
echo "我是", "一句", "话", ",", "但是", "被分开了。";

$a1=520;
$txt1="erhe.group";
 
echo "我喜欢的数字是 $a1";
echo "<br>";
echo "我的网页是:$txt1";
echo "<br>";
echo ("要不要一起开发: $txt1");	// 加括号与不加是一个效果的
?>
print函数
<?php
print "<h2>我这里可以放HTML句子</h2>";
print "By ERHE.GROUP<br>";
print "HTML中的转义符正常用<br>";
// print "我是", "一句", "话", ",", "但是", "被分开了。";(错误写法)
// print 不能输出多个文本的组合
$a1=520;
$txt1="erhe.group";
 
print "我喜欢的数字是 $a1";
print "<br>";
print "我的网页是:$txt1";
print "<br>";
print ("要不要一起开发: $txt1");	// 加括号与不加是一个效果的
?>

⭕注意:print 不能输出多个文本的组合,echo可以

print:输出成功后成功返回1

print_r():输出数组

var_dump():输出数据的详细信息,并且带有数据类型和长度

PHP EOF定义字符串

PHP EOF的基本格式

<?php
echo <<<EOF
        <h1>标题</h1>
        <p>段落</p>
EOF;
// ↑结束需要独立一行且前后不能空格,记得带上;要不编译不会通过
?>
  • 必须后接分号,否则编译通不过。
  • EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  • 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  • 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与a和aa的用法。

❇️PHP常量

PHP定义常量

常量就是在整个运行过程中,固定不变的值,常量不带$,推荐一般情况下常量名为大写
定义方法

define('变量名''值'[变量名大小写区分可指定truefalse(默认)])

正常情况下不能用特殊字符做变量名,但是可使用constant来获取特殊字符定义的值

<?php
define('*.*','erhe');
echo '这个网站是',constant('*.*');

也可以使用const来定义常量

<?php
const WEB='Erhe Web';
echo WEB;

常量一旦被定义,不能再被重新定义
判断常量是否定义,通过defined()判断常量是否已经定义

<?php
define('WEB','erhe');
if(!defined('WEB')){
    define('WEB','erhe by wss');
}
echo WEB;
PHP预定义常量
PHP_EOL    // 换行符
PHP_VERSION;	// PHP版本
PHP_OS;		// PHP运行的系统环境
PHP_INT_MAX;	// PHP中整型的最大值
// · · · · · ·还在持续更新中
PHP预定义魔术常量

魔术常量的值,随着它们在代码中的位置改变而改变

__LINE__;	// 获取当前行号
__FILE__;	// 文件的完整目录和文件名
__DIR__;	// 文件所在的目录

🔣PHP的数据类型

数据类型有两种:强类型和弱类型

PHP是弱类型数据,但是在PHP7.0以后就支持强类型数据

基本类型(标量类型)

整型
  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数
  • 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
  • 最大的整数不超过(32位为例):-2的31次方到2的31次方-1,如果超过了这个范围就自动转变成浮点数
<?php 
$x = 5201314;
var_dump($x);
echo "<br>"; 
$x = -119; // 负数 
var_dump($x);
$a1 = 10;	// 十进制
$a2 = 010;	// 八进制
$a3 = 0x10;	// 十六进制
echo $a1,'<br>';
echo $a2,'<br>';
echo $a3,'<br>';

PS:var_dump函数返回变量的数据类型和值

进制转换
进制缩写单词
十进制decdecimalist
二进制binbinary
八进制octoctonary
十六进制hexhexdecimalist

PHP进制转换机制

<?php
echo decbin(123),'<br>';		// 十进制转二进制
echo bindec(1111011),'<br>';	// 二进制转十进制
echo dechex(123),'<br>';		// 十进制转十六进制
echo hexdec('7b'),'<br>';		// 十六进制转十进制
echo decoct(123);			// 十进制转八进制
浮点型
  • 浮点数是带小数部分的数字,或是指数形式
  • 浮点数在内存中保存的是近似值,不能直接参与数据大小的比较
<?php 
$x = 3.14;
var_dump($x);

若要比较浮点数,必须要确定比较的位数

<?php
var_dump(bccomp(3.14,3.141,[这里指定比较的小数点后面的位数]));

结果的判定:如果两个数相等返回0,左边的数left_operand比较右边的数right_operand大返回1,否则返回-1

布尔型

布尔型只有TRUE和FALSE,它的结果不能使用echoprint进行输出,要用var_dump()来进行输出。

字符串

可以将任何文本放在单引号和双引号中

<?php 
$a = "Welcome ERHE!";
echo $a;
echo "<br>"; 
$c = 'blog';
echo $c;
var_dump($c);
?>
单双引号的区别

单引号是真正的字符串,双引号要解析字符串当中的变量

<?php
$Web='erhe';
echo '我的网站是$Web','<br>';
echo "我的网站是$Web",'<br>';

⭕注意:变量名跟其他字符串用{}分开,{}表示获取变量的值

<?php
$Web='erhe';
echo "{$Web}是我的网站",'<br>';
echo "${Web}是我的网站",'<br>';
echo "$Web是我的网站",'<br>';	// 错误的写法
转义字符
<?php
echo '我说:\'大家好!\'','<br>';
echo '文件保存在c:\\';
字符串定界符
<?php
$test1='定界符,heredoc形式,类似于(双引号)';
echo <<<suibian
$test1 <br>
<strong>这个网站是</strong><br>
<em>Erhe的</em><br>
<u>一个博客网站</u><br>
<hr>
suibian;

$test2='定界符,nowdoc形式,类似于(单引号)';
echo <<<'suibian'
$test2 <br>
<strong>这个网站是</strong><br>
<em>Erhe的</em><br>
<u>一个博客网站</u><br>
<hr>
suibian;
?>

<<<后面跟上标识符,要首位呼应,标识符命名规则跟变量的命名规则一样,最后结尾的时候要顶格写。

数组

数组也是变量,一个变量可以保存多个同类型的数据,只是在内存中这个变量具有连续的空间

索引数组

用整数做下标,默认从0开始(可指定),后面依次加一

<?php 
print '索引数组<br>';
$cars=array("Welcome","By","Erhe","Blog");
// 下标         0       1     2      3
print_r($cars);     // 输出数组
echo '<br><hr>';
var_dump($cars);    // 带是上数据长度输出数组
echo '<br><hr>';
echo $cars[0],'<br>';   // 输出数组上面的数据
echo $cars[2],'<br>';   // 输出数组上面的数据
?>
关联数组

用字符串做下标,通过=>符号将下标和值关联起来

<?php 
print '关联数组<br>';
$empc=array('name'=>'Welcome','sex'=>'Erhe','orc'=>'Blog');
echo $empc['name'],'<br>';
echo $empc['sex'],'<br>';
print_r($empc);
echo '<br><hr>';
var_dump($empc);
?>
数组的下标
<?php
print '被指定的索引数组<br>';
$shutd=array(1=>"Welcome","By","Erhe","Blog");
print_r($shutd);
echo '<br><hr>';
$shutdo=array("Welcome",3=>"By","Erhe",10=>"Blog",'group');
print_r($shutdo);
echo '<br><hr>';
$shutdow=array("Welcome",5=>"By",'name'=>"Erhe","Blog");
print_r($shutdow);
echo '<br><hr>';
$shutdown=array(1=>"Welcome",1=>"By",1=>"Erhe","Blog");
print_r($shutdown);
?>

数组的下标只能是正整数和字符串

<?php 
$a1[true]='aa';     // 转成1
print_r($a1);
echo '<br><hr>';
$b1[false]='bb';     // 转成0
print_r($b1);
echo '<br><hr>';
$c1[12.9]='cc';     // 转成12(取整数部分)
print_r($c1);
echo '<br><hr>';
$d1[-10]='dd';     // 负数可以做下标
print_r($d1);
echo '<br><hr>';
$e1[-12.3]='ee';     // 取负整数
print_r($e1);
echo '<br><hr>';
$f1['10']='ff';     // 字符串数字转成数字
print_r($f1);
echo '<br><hr>';
$g1[]='gg';     // 空字符串也可以做下标
print_r($g1);
echo '<br><hr>';
$h1[null]='hh';     // 转成空字符串做下标
print_r($h1);
?>
短数组语法

可以直接使用中括号来声明属组

<?php 
print '索引数组<br>';
$cars=array("Welcome","By","Erhe","Blog");
print_r($cars);
?>

数组的赋值

⭕注意:这个是适用于PHP7.1以上的版本

<?php 
$num1=10;
$num2=20;
[$num1,$num2]=[$num2,$num1];
echo $num1,'<br><hr>',$num2;
?>

二维数组的声明

<?php 
$erhetwo=[
    ["Welcome","By","Erhe","Blog"],
    ['name'=>'Welcome','sex'=>'Erhe','orc'=>'Blog']
];
print_r($erhetwo);
echo '<br><hr>';
echo'<pre>';	// 原样显示
print_r($erhetwo);
?>

字符串与数组

⭕注意:这个是适用于PHP7.1以上的版本

<?php 
echo 'erheblog'[0],'<br>';
echo 'erheblog'[-1],'<br>';   // 从右边开始取第一个
?>

数据类型转换

自动类型的转换

当提供的类型和需要的类型不一致的时候会自动进行类型转换

<?php 
$num=10;
if($num){       // 自动将数字转成布尔型
    echo 'aa';
}else{
    echo 'bb';
}
echo '<br><hr>';
echo '20'-10;   // 自动的将字符串转成数字
?>
强制类型转换

语法:(数据类型)数据

<?php 
$num=12;
var_dump($num,(int)$num,(float)$num);
?>
其他类型与布尔之间的转换

规则:0、空为假,非0、非空为真

  • 数字转换规律:0为false,非0为true
  • 字符串数组转换规则:0和空是false,其他是true
<?php 
var_dump((bool)'abc');      // bool(true)
echo '<br><hr>';
var_dump((bool)'');      // bool(false)
echo '<br><hr>';
var_dump((bool)'0');      // bool(false)
echo '<br><hr>';
var_dump((bool)'0.0');      // bool(true)
echo '<br><hr>';
var_dump((bool)'00');      // bool(true)
echo '<br><hr>';
var_dump((bool)'false');      // bool(true)
echo '<br><hr>';
var_dump((bool)'null');      // bool(true)
echo '<br><hr>';
var_dump((bool)1);      // bool(true)
echo '<br><hr>';
var_dump((bool)0);      // bool(false)
echo '<br><hr>';
var_dump((bool)-10);      // bool(true)
echo '<br><hr>';
var_dump((bool)0.0);      // bool(false)
echo '<br><hr>';
var_dump((bool)array());      // bool(false)
echo '<br><hr>';
var_dump((bool)array(1));      // bool(true)
echo '<br><hr>';
var_dump((bool)array(false));      // bool(true)
echo '<br><hr>';
var_dump((bool)null);      // bool(false)
echo '<br><hr>';
?>

#️⃣PHP的运算符

算术运算符

一元运算符二元运算符
+++
-
*
% (取余)

⭕注意:在PHP中。算术运算符只能做数学运算。

<?php 
echo '10'+'20','<br><hr>';  // 自动进行数据转换
echo '10ab'+'20cd','<br><hr>';  // 省略字符
echo 'ab10'+'cd20','<br><hr>';  // 读取字符串的首字符
?>

++后置:先运算再自增

<?php 
$suma=10;
echo $suma++;      // 10
?>

++前置:先自增再运算

<?php 
$suma=10;
echo ++$suma;      // 11
?>

关系(比较)运算符

>
>=
<
<=
==		// 等于运算,但是不比较值的类型
!=
===		// 完全等于运算,不仅比较值,而且还比较值的类型,只有两者一致才为真
!==
.		// 连接字符串

逻辑运算符

用来连接两个比较运算符

&	// 与:运算符两边的表达式都要计算
|	// 或:运算符两边的表达式都要计算
// 短路就是如果前面的条件不满足,后面的条件就不用计算了
&&	// 短路与
||	// 短路或// 非
<?php 
$a=5;
if($a>10 && ++$a>20)
    echo 'erhe.group';
echo $a;
?>
// 分析:$a>10为false,与中只要有一个是false,另一个不用计算结果肯定是false,所以短路与++a就不计算了,结果是5。
<?php 
$a=5;
if($a<10 || ++$a>20)
    echo 'erhe.group';
echo $a;
?>
// 分析:短路或只要有一个为true,结果肯定是true,$a<10结果是true,后面++$a就不用计算了,结果是5。

赋值运算符

=
+=
-=
*=
/=
%=

字符串连接符

<?php 
echo 'aa'.'bb';
echo 'aa','bb';
?>

错误抑制符

错误抑制符只对表达式有效

<?php 
echo $erhe+$group;
echo '<br>','<hr>';
echo @($erhe+$group);	// 错误抑制符
?>

三元运算符

语法:表达式?值1:值2
表达式的值为true,或者是1返回值1,否则返回值2

<?php 
$erhe=10;
echo $erhe%2?'奇数':'偶数';
?>

null合并运算符

⭕注意:这个是适用于PHP7.0以上的版本

<?php 
$data1=321;
echo $data1??'数据未知!';
echo '<br>','<hr>';
echo $data2??'数据未知!';
?>

判断变量是否为设置函数

isset();	// 判断变量是否被设置,并且设置的不是null
empty();	// 判断一个变量是否为空

PS:变量是否无为空的定义,就是变量的值在转成布尔型的值时候,显示的结果为false的全部为空。

✅PHP的判断

语法

单分支
if(条件){
    // 代码块
}
双分支
if(条件){
    // 代码块
}else{
    // 代码块
}
多分支
if(条件1){
    // 代码块
}elseif(条件2){
    // 代码块
}else {
    // 代码块
}
多路选择
case 常量:
    // 代码块
    break;
case 常量:
    // 代码块
    break;
default:
    // 代码块

应用实例

判断是否为闰年(练习单分支)

步骤:

  • 创建表单
  • 提交数据
  • 在服务器获取提交的数据并判断

代码实现

<!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
    if(!empty($_POST)){     // 判断$_POST是否为空,不为空就提交了数据
        $year=$_POST['year'];   // 获取年份
        echo $year;
        if($year==''){
            echo '您没有输入年份!';
        }else{
            if(is_numeric($year)){  // 判断$year是否是数字或字符串数字
                $year+=0;   // 将字符串数字转成数字型
                if(is_int($year)){  // is_int用来检测变量是否是整形
                    if($year<1){
                        echo '您输入的年份必须是正整数';
                    }else{
                        if($year%4==0 && $year%100!=0 || $year%400==0){
                            echo "{$year}是闰年";
                        }else{
                            echo "{$year}是平年";
                        }
                    }
                }else{
                    echo '您输入的不是整数';
                }
            }else{
                echo '您输入的不是数字';
            }
        }
    }
?>
<from method="post" action="">
    请输入年份:<input type="text" name="year"> <br />
    <input type="submit" name="button" value="判断闰年">
</from>
</body>
</html>

小结:

  • $_POST是一个变量,用来保存post提交的数据
  • action=""表示将数据提交到本页面
  • is_numeric()用来判断变量是否是数字或字符串数字
  • is_int()判断变量是否是整形
  • if else后面如果只有一句代码,大括号可以省略
判断成绩(练习多分支)

目标:输入语文和数学判断等级

代码实现:

<!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
if (isset($_POST['button'])){   // 判断$_POST是否为空,不为空就提交了数据
    $ch=$_POST['ch'];       // 获取语文成绩
    $math=$_POST['mach'];   // 获取数学成绩
    if($ch=='' || !is_numeric($ch) || $ch<0 || $ch>100){
        echo '语文成绩必须在0-100之间';
    }
    elseif($math='' || !is_numeric($math) || !($math>=0 && $math<=100)){
        echo '数学成绩必须在0-100之间';
    }else {
        $avg=($ch+$math)/2;
        echo "您的平均分是:{$avg}<br>";
        if($avg>=90)
        echo 'A';
        elseif($avg>80)
        echo 'B';
        elseif($avg>=70)
        echo 'C';
        elseif($avg>=60)
        echo 'D';
        else
        echo 'E';
    }
}
?>
<from method="post" action="">
    语文:<input type="text" name="ch"> <br />
    数学:<input type="text" name="math"> <br />
    <input type="submit" name="button" value="判断成绩">
</from>
</body>
</html>
更改颜色(练习swich-case)

目标:选择颜色,将文字的颜色改成选择的颜色

代码实现:

<!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
if(isset($_POST['button'])){
   switch($color=$_POST['color']){
        case '1':
            $color='#ff0000';
            break;
        case '2':
            $color='#009900';
            break;
        case '3':
            $color='#0000ff';
            break;
        default:
            $color='#000000';
   }
   echo <<<str
   <script type="text/Javascript">
   window.οnlοad=function(){
       document.getElementById('shi').style.color='$color';
    }
    </script>
str;
}
?>
<div id="shi">
    锄禾日当午,<br />
    汗滴禾下土。<br />
    谁知盘中餐,<br />
    粒粒皆辛苦。<br />
</div>
<from method="post" action="">
    <select name="color">
        <option value="0">请选择颜色</option>
        <option value="1">红色</option>
        <option value="2">绿色</option>
        <option value="3">蓝色</option>
    </select>
    <input type="submit" name="button" value="更改颜色">
</from>
</body>
</html>
计算器

目标:实现一个网页计算器

代码实现:

<!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
$num1='';       // $num1的初始值
$num2='';       // $num2的初始值
$op='';
$result='';
if(!empty($_POST)){
    $num1=$_POST['num1'];
    $num2=$_POST['num2'];
    $op=$_POST['op'];   // 操作符
    switch($op){
        case '+':
            $result=$num1+$num2;
            break;
        case '-':
            $result=$num1-$num2;
            break;
        case '*':
            $result=$num1*$num2;
            break;
        case '/':
            $result=$num1/$num2;
            break;
    }
}
?>
<from method="post" action="">
    <input type="text" name="num1" value='<?php echo $num1?>'>
    <select name="op">
        <option value="+" <?php echo $op=='+'?'selected':''?>>+</option>
        <option value="-" <?php echo $op=='-'?'selected':''?>>-</option>
        <option value="*" <?php echo $op=='*'?'selected':''?>>*</option>
        <option value="/" <?php echo $op=='/'?'selected':''?>>/</option>
    </select>
    <input type="text" name="num2" value='<?php echo $num2?>'>
    <input type="submit" name="button" value="=">
    <input type="text" name="result" value='<?php echo $result?>'>
</from>
</body>
</html>

♻️PHP循环

基本循环语句

for循环

基本语法

for(初始值;条件;增量){
    // 代码块
}

⭕注意:循环中千万不能出现死循环

死循环案例1

<?php
for($i=1;$i<10;$i--){	// $i永远小于10
    echo "{$i}:开始了死循环喂!<br><hr>";
}
?>

死循环案例2

<?php
for($i=1;$i<10;){	// $i永远等于1,并且小于10
    echo "{$i}:开始了死循环喂!<br><hr>";
}
?>

死循环案例3

<?php
for($i=1;;$i++){	// 只要没有条件就是死循环
    echo "{$i}:开始了死循环喂!<br><hr>";
}
?>

死循环案例4

<?php
for(;;){	// 最经典的死循环
    echo "{$i}:开始了死循环喂!<br><hr>";
}
?>

循环理论:

在循环N次的循环体中,初始值执行了1次,条件执行了N+1次,增量执行了N次。在循环执行完毕后,变量的值($i)是存在的。

while循环

基本语法

while(条件){
    // 代码块
}
do-while循环

基本语法

do{
    // 代码块
}while(条件)

PS:

  • for、while、do-while可相互替换
  • 如果明确知道循环多少次首选for
  • 如果要循环到条件不成立为止选while或者是do-while
  • 先判断再执行选while,先执行再判断选do-while
  • while循条件不成立就不执行,do-while循环条件不成立至少执行一次
foreach循环

foreach循环是用来遍历数组,相似于for-in循环。

基本语法一

foreach(数组 as){
    // 代码块
}

基本语法二

foreach(数组 as=>){
    // 代码块
}
switch循环

基本语法

switch(变量){
    // 验证条件
    case [条件]:
        // 条件执行体
        break;
    case [条件]:
        // 条件执行体
        break;
    default:
        // 条件执行体
}

PS:虽然只执行一次,但它也属于一种循环

基本循环实战

实现功能:实现从1加到100

for循环
<?php
$sum=0;
for($i=1;$i<=100;$i++){
    $sum+=$i;
}
echo $sum;
?>
while循环

方法一

<?php
$i=1;
$sum=0;
while($i<=100){
    $sum+=$i;
    $i++;
}
echo $sum;
?>

方法二

<?php
$i=1;
$sum=0;
while($i<=100){
    $sum+=$i++;
}
echo $sum;
?>
do-while循环

方法一

<?php
$i=1;
$sum=0;
do{
    $sum+=$i;
    $i++;
}while($i<=100);
echo $sum;
?>

方法二

<?php
$i=1;
$sum=0;
do{
    $sum+=$i++;
}while($i<=100);
echo $sum;
?>

方法三

<?php
$i=1;
$sum=0;
do{
    $sum+=$i;
}while(++$i<=100);
echo $sum;
?>

PS:结合++前置和++后置考虑逻辑

foreach循环

方式一

<?php
$stu=["Welcome","By","Erhe","Blog"];
foreach($stu as $v){
    echo $v,"<br><hr>";
}
?>

方式二

<?php
$stu=["Welcome","By","Erhe","Blog"];
foreach($stu as $k=>$v){
    echo "{$k}:{$v}","<br><hr>";
}
?>

多语句表达式

目的:初始值、增量可以由多条语句组成

实现功能:数字分解

<?php
for($i=1,$j=9;$i<=$j;$i++,$j--){
    echo "10可以分成{$i}{$j}<br>";
}
?>

PS:初始值、增量可以写多个表达式,但是条件一般只写一个,如果条件写多个,只是最后一个条件起作用

双重循环

实现功能:打印阶梯数字

<?php
for($i=1;$i<=9;$i++){	// 循环行
    for($j=1;$j<=$i;$j++){	// 循环列
        echo $j,'&nbsp;';
    }
    echo '<br>';
}
?>

实现功能:打印九九乘法表

<?php
for($i=1;$i<=9;$i++){
    for($j=1;$j<=$i;$j++){
        echo $i,'*',$j,'=',$i*$j,'&nbsp;';
    }
    echo '<br>';
}
?>

变好看后

<style type="text/css">
    table{
        width:980px;
    }
    table,td{
        border:solid 1px #0000FF;
        border-collapse:collapse;
    }
    td{
        height:40px;
    }
</style>

<table>
<?php
for($i=1;$i<=9;$i++){
    echo '<tr>';
    for($j=1;$j<=$i;$j++){
        echo "<td>{$i}*{$j}=",($i*$j),'</td>';
    }
    echo '</tr>';
}
?>
</table>

🦿PHP跳转语句

break

中断循环

<?php
for($i=1;$i<10;$i++){
    echo "{$i}:Welcome","Erhe","Blog!<br><hr>";
    if($i==5)
    break;
}
?>	// 输出5句
<?php
for($i=1;$i<10;$i++){
    if($i==5)
    break;
    echo "{$i}:Welcome","Erhe","Blog!<br><hr>";
}
?>	// 输出4句

中断多重循环

<?php
for($i=1;$i<=9;$i++){
    for($j=1;$j<=$i;$j++){
        echo $j,'&nbsp;';
        if($j==5){
            break 2;	// 跳出几个循环就写及
        }
    }
    echo '<br>';
}
?>

continue

中断当前循环,进入下一个循环

<?php
for($i=1;$i<10;$i++){
    if($i==5)
    continue;
    echo "{$i}:Welcome","Erhe","Blog!<br><hr>";
}
?>	// 没有第5句的结果输出

PS:break和continue默认中断、跳出1重循环,如果调中断、跳出多重循环,在后面加一个数字。

🎭PHP代替语法

PHP中,除了do-while以外,其他的语法结构都有替代语法
规则:左大括号变冒号,又大括号变endxxx

基本代替语法

if的代替语法
if():
elseif():
else:
    // 代码块
endif;
switch的代替语法
switch():
    // 代码块
endswitch;
for的代替语法
for():
    // 代码块
endfor;
while的代替语法
while():
    // 代码块
endwhile;
foreach的代替语法
foreach():
    // 代码块
endforeach;

应用实例

应用到混编上面

未使用代替语法

<!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
for($i=1;$i<=10;$i++){
    if($i%2==0){
?>
    <?php echo $i?>:WelcomeErheBlog!<br><hr>
<?php
    }
}
?>
</body>
</html>

使用代替语法

<!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
for($i=1;$i<=10;$i++):
    if($i%2==0):
?>
    <?php echo $i?>:WelcomeErheBlog!<br><hr>
<?php
    endif;
endfor;
?>
</body>
</html>

📥PHP函数

函数就是一段代码块
函数可以实现模块化编程

函数的定义

定义函数的基本语法

function 函数名(参数1,参数2,.....){
    // 函数体
}

函数的调用

函数名();

PS:函数名不区分大小写。

可变函数

将函数名存储到变量中

<?php
function erhe($path){
    echo $path,'<br>';
}
$nvme='erhe';
$nvme('welcome');
?>

匿名函数

<?php
$erhe=function(){	// 定义匿名函数
    echo 'welcome erhe.group';
};
$erhe();	// 调用函数
?>

参数传递

函数的参数有形式参数和实际参数
形式参数是定义函数时候的参数,只起形式的作用,没有具体的值
实际参数的调用函数时候的参数,有具体的值

<?php
function erhe($num1,$num2){
    echo $num1+$num2;
}
erhe(12,23);
?>

默认情况下,参数的传递是值传递

<?php
$num=10;
function erhe($augrp){
    $augrp=50;
}
erhe($num);
echo $num;
?>

地址传递,加上$

<?php
$num=10;
function erhe(&$augrp){
    $augrp=50;
}
erhe($num);
echo $num;
?>

PS:如果是地址传递,不能直接写值

参数的默认值

在函数定义的时候给形参赋值就是参数的默认值。(默认值必须是值,不能用变量代替)

<?php
function erhe($name,$port='地址不详'){
    echo '姓名:'.$name,'<br>';
    echo '地址:'.$port,'<hr>';
}
erhe('阿里云','北京');
erhe('华为云');
?>

默认值可以使用常量

<?php
define('ACE','地址不详');	// 设置常量
function erhe($name,$port=ACE){		// 注意形参的顺序
    echo '姓名:'.$name,'<br>';
    echo '地址:'.$port,'<hr>';
}
erhe('阿里云','河南');
erhe('华为云');
?>

PS:没有默认值的形参写前面,有默认值的形参写后面。

参数个数不匹配盘

<?php
function erhe($num1,$num2){
    echo $num1,'<br>';
    echo $num2,'<hr>';
}
// erhe(10);    // 实参少于形参(报错)
erhe(10,20,30);     // 实参多于形参,只取前面对应的值
?>

获取所传递的参数

<?php
function erhe(){
//    echo func_num_args(),'<br>';    // 获取参数的个数
    $num=func_get_args();   // 获取参数的数组
    print_r($num);
    echo '<br>';
}
erhe(10);
erhe(10,20);
erhe(10,20,30);
?>

参数约束

定义变长参数

...相当于func_get_args()上面的函数

<?php
function erhe($name,$age,...$aihao){
    echo '姓名:'.$name,'<br>';
    echo '年龄:'.$age,'<br>';
    print_r($aihao);
    echo '<hr>';
}
erhe('tom',21);
erhe('李华',25,'吃饭','睡觉');
?>

⭕注意:如果数组调用此函数要将数组里面的参数展开

<?php
function erhe(...$args){
    print_r($args);
    echo '<br>';
}
$numg=[10,20,30];
echo '<pre>';
erhe(...$numg);		// 将数组中的参数展开
?>
参数类型约束

⭕注意:这个是适用于PHP7.0以上的版本

<?php
function erhe(string $name,int $age){   // 指定数据类型,变成强类型数据
    echo "姓名:{$name}<br>";
    echo "年龄:{$age}<br>";
}
// erhe('tome','aug');  // 已经报错了
erhe('tome',32);
?>
返回值类型约束
<?php
function erhe(int $num):int{   // 指定返回值的数据类型
//    return "aaa";     // 不是指定的返回值数据就报错
    return $num;
}
erhe(32);
?>

PS:可约束的数据类型有这些:string、int、float、bool、数组

约束返回类型是数组

function erhe():array{ 
}

约束return后面不能有返回值

⭕注意:这个是适用于PHP7.1以上的版本

function erhe():void {	// void是空的意思
    return;
}
erhe();

⛔return

终止脚本执行

<?php
echo '锄禾日当午<br>';
return;
echo '汗滴禾下土';
?>

⭕注意:return只能中断当前php文件,如果有包含文件,就只能中断有return的那个php文件。

如果想全部终止使用

exit();
// 或者
die();

返回页面结果

index.php(主页文件)

<?php
$stu=require './test.php';
print_r($stu);
?>

test.php(包含文件)

<?php
return array('name'=>'tom','sex'=>'男');
?>

PS:在项目中引入配置文件就使用这种方法

函数的返回和终止

函数的终止

<?php
function erhe(){
    echo 'aaa';
    return;
    echo 'bbb';
}
erhe();
?>

函数的返回

<?php
function erhe(){
    return 10;
}
echo erhe();
?>

🪄练习测试

通过for循环将数组中值求和、求平均值

代码实现

<?php
$num=[1,24,534,65,2,54,657,2,64,35,54,767,86,344];
$he=0;
// for($i=0;$i<count($num);$i++){     // 代码可优化,看如下
for($i=0,$n=count($num);$i<$n;$i++){
    $he+=$num[$i];
}
echo '和是:'.$he,'<br>';
echo '平均值:'.$he/count($num),'<br>';
echo '平均值,精确到小数点后两位:'.number_format($he/count($num),2);
?>

数组翻转

<?php
$stu=["Welcome","By","Erhe","Blog"];
for($i=0,$j=count($stu)-1;$i<$j;$i++,$j--){
    [$stu[$i],$stu[$j]]=[$stu[$j],$stu[$i]];	// 元素交换
}
print_r($stu);
?>

遍历二维数组

<?php
$stu=[
    [1,3,5,2,3,4,5],
    [12,32,435,3,2321,121,2,32,12]
];
for($i=0;$i<count($stu);$i++){     // 循环第一列
    for($j=0;$j<count($stu[$i]);$j++){  // 循环第二列
        echo $stu[$i][$j],'&nbsp';
    }
    echo '<br>';
}
?>

数据分拣

<?php
for($i=1;$i<=100;$i++){
    if($i%15==0)
        echo 'C';
    elseif ($i%3==0) 
        echo 'A';
    elseif ($i%5==0) 
        echo 'B';
    else
        echo $i;
    echo '&nbsp';
}
?>

打印水仙花数

<?php
for($i=100;$i<=999;$i++){
    $a=(int)($i/100);
    $b=(int)(($i%100)/10);
    $c=(int)($i%10);
    if($i==pow($a,3)+pow($b,3)+pow($c,3))
    echo $i,'<br>';
}
?>

斐波那契数列

<?php
$num1=1;    //  第一个数
$num2=1;    //  第二个数
echo $num1,'&nbsp;',$num2,'&nbsp;';
while(true){
    $num3=$num1+$num2;  //  第三个数是前面两个数的和
    if($num3>100)   // 超过100终止循环
    break;
    echo $num3,'&nbsp;';
    $num1=$num2;    // 将$num1转给$num2
    $num2=$num3;    // 将$num2转给$num3
}
?>

🥅PHP作用域

声明的局部与全局

局部的变量声明

<?php
$x=10020; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";
    echo "变量 y 为: $y";
} 
myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "变量 y 为: $y";		// 这个是没有输出的
?>

变量作用域

全局变量:在函数外面
局部变量:在函数里面,默认情况下,函数内部是不会访问函数外部的变量
超全局变量:可以在函数内部和函数外部访问,形式:$_XXXXXX
常量没有作用域的概念,在哪里都适应。

报错写法:函数内部是不会访问函数外部的变量

<?php
$num=10;
function erhe(){
    echo $num;
}
erhe();
?>

将值赋给全局变量

<?php
$_POST['num']=10;
function erhe(){
    echo $_POST['num'];
}
erhe();
?>

函数内定义全局变量

<?php
function erhe(){
    $_POST['num']=10;
    echo $_POST['num'];
}
erhe();
echo $_POST['num'];
?>
global 关键字

global 关键字用于函数内来读取并会更新数外的全局变量

<?php
$x=8;
$y=6;
function erhe(){
    global $x,$y;	// 将函数外部的变量,引用到函数内部
    $y=$x+$y;
}
erhe();
echo $y; // 输出 14
?>

函数内部访问全局变量:使用$GLOBALS[]函数

<?php
$x=8;
$y=6;
function erhe(){
    $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];  // 访问全局变量
} 
erhe();
echo $y;	// 输出 14
?>

PS:只要你声明了全局变量,它就会自动保存到$GLOBALS[]函数里面。

Static 关键字
<?php
function erhe(){
    static $x=0;
    echo $x;
    $x++;
    echo PHP_EOL;    // 换行符
}
erhe();		// 调用第一次
erhe();		// 调用第二次
erhe();		// 调用第三次
// PHP常量的每次调用的值都会被存储,下次调用时,用的是上次调用后的结果。
?>

静态变量

静态变量一般指的是静态局部变量

<?php
function erhe(){
    $num=10;
    $num++;
    echo $num,'<br>';
} 
erhe();		// 调用第一次
erhe();		// 调用第二次
erhe();		// 调用第三次
// PHP静态局部变量的每次调用的值都不会被存储,下次调用时,用的是新的变量,上次的值会被销毁。
?>

常量和静态变量的区别
1、常量和静态变量都是初始化一次
2、常量不能改变值,静态变量可以改变值
3、常量没有作用域,静态变量有作用域

匿名函数use()

默认情况下,函数内部不能访问函数外部的变量,但在匿名函数中,可以通过use将外部变量引入匿名函数中

<?php
$num=10;
$erhe=function() use($num) {
    echo $num;
};
$erhe();
?>

PS:只能引入一层,嵌套使用use()函数则不能引入成功

递归

函数内部自己调用自己

打印10~1

<?php
function erhe($num){
    echo $num,'&nbsp';
    if($num==1) // 递归出口
        return;
    erhe($num-1);   // 递归点
}
erhe(10);
?>

从1加到100

<?php
function erhe($num){
    if($num==1) // 递归出口
        return 1;
    return $num+erhe($num-1);   // 递归点
}
echo erhe(100);
?>

斐波那契数列

打印第五个斐波那契数

<?php
function erhe($n){
    if($n==1 || $n==2) // 递归出口
        return 1;
    return erhe($n-1)+erhe($n-2);   // 递归点
}
echo erhe(5);
?>

打印前10个斐波那契数列

<?php
function erhe($n){
    if($n==1 || $n==2) // 递归出口
        return 1;
    return erhe($n-1)+erhe($n-2);   // 递归点
}
for($i=1;$i<=10;$i++)
echo erhe($i),'&nbsp;';
?>

📣特别声明

原文地址:https://blog.kbai.cc/%E5%85%A5%E5%9D%91PHP1/

此文章全部都是依靠自己的学习理解来写的原创文章,难免可能会出现有错误的地方,

如果大家以后阅读的时候发现有问题,那就麻烦到下方评论区来进行错误指出,使错误尽快做出改正,

在此,感谢大家的阅读与支持!🤝💦🎉

🍻支持一下

觉得我写的好的话可以支持一下我哦~持续关注我,会更新其他好玩且实用的项目。

👋如果我能帮助到你,那就请我喝杯🧋呗~👇👇👇

我的博客链接:blog.kbai.cc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开摆工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值