少女祈祷中...

PHP

简介

PHP是一种服务器端的HTML脚本/解释语言,快速书写动态网页

静态网页和动态网页

不解释

web访问流程

web网页发起》dns解析域名》服务器电脑》服务器软件

PHP基本语法

<meta charset="UTF-8">
<!DOCTYPE html>
<html>
    <body>
    <h1>Hello world</h1>
    <?php
    echo "I see you";
    ?>
    </body>
</html>

PHP可以运行css,html,js语句,但是html,css,js文件里不能包含PHP语句

输出方法:echo print

不同点:

echo:输出多个字符串

print:输出一个字符串,并且返回1

<?php
    echo "I see you";
	print "I watting you","hhh";
?>
#以上内容会报错
<?php
    echo "I see you";
    echo print "I watting you";
?>
#会返回1
<?php
    $a = print "I see you";
    echo $a
?>

注释

不多解释

多行注释

/*

*/

变量

变量命名不多解释,对大小写敏感,必须以字母或下划线开头

推荐三种命名法:下划线,大驼峰,小驼峰

不用告诉php数据类型,会自动转换

命令行

可以像python一样在命令提示符里运行

<?php
    $input = readline("请输入:");
	echo "你输入的是:".$input;
?>
____________________________________________________________________________________________________________
<?php
    $a = readline("请输入:");
    $b = readline("请再输入:");
	echo "你输入的是:" .($a + $b)
?>
#别问为什么中文不显示全面
<?php
    echo "请输入内容:";
    $input = fgets(STDIN);
	echo "输入的内容是:".$input;
?>

数据类型

字符串,整数,浮点,布尔,数组,对象,资源类型,NULL

用var_dump()会返回数据类型和值,一般用于开发调试

echo gettype();只返回数据类型

<?php
    $a = "I see you" ;
    $b = "I watting you" ;
	var_dump($a,$b) ;
    echo "a的值是$a" ;
	echo "<br>" ;
	echo 'b的值是$b' ;
	echo "<hr>" ;
	echo gettype($a)
?>

整数

<?php 
    $A = 0721 ;
    $B = -0721 ;
    $C = 0x900 ;
    $D = 0173 ;
    $E = 0b1100 ;
    echo var_dump($A) ;
    echo var_dump($B) ;
    echo var_dump($C) ;
    echo var_dump($D) ;
    echo var_dump($E) ;
?>

浮点数

<?php
        $A = 3.14 ;
    $B = 3.14e5 ;
    $C = 8E-5 ;
    echo var_dump($A) ;
    echo var_dump($B) ;
    echo var_dump($C) ;
?>

布尔型

<?php
    $a = true ;
    $b = false ;
?>

数组

分为一维数组和多维数组,在变量中存储多个值

<?php
    $a = ["a","b","c"] ;
	$c = array("a","b","c") ;
	var_dump($a,$c)
?>

对象

需要封装和类知识

print("

") ; 格式化输出

NULL

表示变量无值,可设置变量为NULL来清空变量数据

resource 资源类型

HTML快速回顾

  • 在VSCode里安装Live server插件

注释

<!--注释内容-->

标签语法

成对标签:

自闭合标签:

块级元素

h标签

h1-h6

p标签
<p>
    
</p>
div标签

行级元素

<span></span>
<a></a>
<b></b>
<strong></strong>
<i></i>
<em></em>
</img/>

标签属性

class id style

href

src width height alt

name

form表单

input输入框,单选框,多选框

select下拉框

label标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    12345d
    <hr>
    <h1>这是一个测试</h1>
    <h2>这是一个测试</h2>
    <h3>这是一个测试</h3>
    <h4>这是一个测试</h4>
    <h5>这是一个测试</h5>
    <h6>这是一个测试</h6>
    <p>
        谁念西风独自凉,萧萧黄叶闭疏窗,沉思往事立残阳。
        嗟叹红颜泪、英雄殁,人世苦多。山河永寂、怎堪欢颜。
    </p>
    <span>这是一个测试</span>
    <br>
    <a>这是一个测试</a>
    <br>
    <b>这是一个测试</b>
    <br>
    <strong>这是一个测试</strong>
    <br>
    <i>这是一个测试</i>
    <br>
    <em>这是一个测试</em>
    </img/>
    <br>
    <form action="" method="post">
        <input type="text" value="123">
        <br>
        <input type="radio" name="sex">
        <br>
        <input type="checkbox" name="sex">
        <br>
        <select name="a">
            <option value="x1">x</option>
            <option value="y1">y</option>
        </select>
        <br>
        <label for="ch2">年龄</label>
        <input type="checkbox" name="ab" id="ch1">
        <input type="checkbox" name="cd" id="ch2">

    </form>    
    <br>

</body>
</html>

实战,简易博客

<?php
    $title = "魏鑫的博客";
    $bgColor ="#66ccff"; 
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?php echo $title ?></title>
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 0;
            background-color: <?php echo $bgColor; ?>;
        }

        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
        }

        .navbar {
            background-color: #333;
            overflow: hidden;
        }

        .navbar a {
            float: left;
            display: block;
            color: white;
            text-align: center;
            padding: 14px 16px;
            text-decoration: none;
        }

        .navbar a:hover {
            background-color: #ddd;
            color: black;
        }

        .title {
            text-align: center;
            margin-bottom: 20px;
        }

        .text-area {
            width: 80%;
            margin: 0 auto;
            padding: 20px;
            border: 1px solid #ccc;
            background-color: #f9f9f9;
        }
    </style>
</head>

<body>
    <div class="navbar">
        <a href="#home">首页</a>
        <a href="#about">关于我</a>
        <a href="#posts">博客</a>
        <a href="#contact">联系我</a>
    </div>
<?php
    $content = "这里是魏鑫的博客内容。您可以使用HTML和CSS编写自己的网页。";
    $createDay =  "2023.11.1";
?>
    <div class="container">
        <h1 class="title">欢迎来到我的博客</h1>
        <div class="text-area">
            <span class="create-day"><?php echo $createDay ?></span>
            <?php echo $content ?>
        </div>
<?php
    $content = "魏鑫大傻逼";        //变量重复赋值,代码执行自上而下
    $createDay = "2323.23.23"
?>
        <div class="text-area">
            <span class="create-day">2023.09.22</span>
            个人介绍
        </div>
<?php
    $createDay = "2233.22.11";
    echo '
            <div class="text-area">
            <span class="create-day">'.$createDay.'</span>
            文章列表
        </div>
    '

?>
        <div class="text-area">
            <span class="create-day">2023.09.21</span>
            联系方式等
        </div>
        <div class="text-area">
            <span class="create-day"><?php echo $createDay ?></span>
            <?php echo $content ?>
        </div>
    </div>
</body>

</html>

EOF(heredoc)定界符

  • 以«<EOF开始标记开始,以EOF结束标记结束
  • 结束标记必须顶头写,独一行写,不能有缩进和空格
  • EOF 可以用任意其它字符代替,开始标记和结束标记相同即可,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。
  • 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc中,变量不需要用连接符.或,来拼接
  • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义。
<?php
    $a = "sqqq";
	echo <<<EOF 12312341234$a sadfadsf
EOF;
?>
echo <<<EOF
"双引号外所有被排列好的格式都会被保留"
"但是双引号内会保留转义符的转义效果,比如table:\t和换行:\n下一行"
你看页面有\t吗?
\n \t 和引号没关系吧
'单引号 \t \n是否能看到'

总结:php里连接字符串与变量的方法

1.直接连接

$name = "wx";
echo "hello,".$name;
echo 'hello'.$name;
echo "hello,$name";
........

2.echo输出多个变量

$name = "world";
echo "hello,$name";

EOF定界符(heredoc)和(nowdoc)

php
	$name = 'hello';
	echo <<<EOF
	$name world
	EOF;
$name = "hello";
echo <<<"EOF"
$name world
EOF;

4.模板字符串

echo "hello,{$name}";
$name = ["name" => "hello"];
echo "hello,{$name['name']}";

5.printf()和sprintf()

printf是直接输出,不返回任何值

sprintf不输出,但有返回值

$name = "hello";
$age=35;
printf("魏鑫%s,今年%s",$name,$age);

运算符

运算符 名称 描述 实例 结果
x + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的积 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 模(除法的余数) x 除以 y 的余数 5 % 2 10 % 8 10 % 2 1 2 0
-x 设置负数 取 x 的相反符号 <?php $x = 2; echo -$x; ?> -2
~x 取反 x 取反,按二进制位进行"取反"运算。运算规则:~1=-2; ~0=-1; <?php $x = 2; echo ~$x; ?> -3
a . b 并置 连接两个字符串 “Hi” . “Ha” HiHa
<?php
    $x = 10;
    $y = 6;
echo ($x + $y);
echo "<br>";
echo ($x - $y);
echo "<br>";
echo ($x % $y);
echo "<br>";
echo -$x;

//整数之间的整除,参数也必须是整数,向下取整
var_dump(intdiv(10,3));
?>
运算符 等同于 描述
x = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y 模(除法的余数)
a .= b a = a . b 连接两个字符串

递增/递减运算符

运算符 名称 描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
– x 预递减 x 减 1,然后返回 x
x – 后递减 返回 x,然后 x 减 1

比较运算符

运算符 名称 描述 实例
x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false
x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true 5===“5” 返回 false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
x !== y 不绝对等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!==“5” 返回 true
x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false
x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true

逻辑运算符

运算符 名称 描述 实例
x and y 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 and y > 1) 返回 true
x or y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==6 or y==5) 返回 true
x xor y 异或 如果 x 和 y 有且仅有一个为 true,则返回 true x=6 y=3 (x==6 xor y==3) 返回 false
x && y 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 && y > 1) 返回 true
x || y 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==5 || y==5) 返回 false
! x 如果 x 不为 true,则返回 true x=6 y=3 !(x==y) 返回 true

条件语句

<?php
$a = 2;
if ($a == 3){
    echo $a;
}
elseif ($a == 4){
    echo $a;
}
else{
    echo "no";
}
<?php
$a = 20;
$b = 40;
switch ($a - $b) {
    case 10:
        echo "1";
        break;
    case 20:
        echo "2";
        break;
    default:
        echo "3";
}
<?php
$a = 20;
$b = 40;
for ($c = 0; $c < 10; $c++) {
    echo "num:".$c.PHP_EOL; //PHP_EOL表示换行符
}

数组

$a = array("1","2","3");
$b = ["1","2","3"];
///////////////////////////
$a[0] = "1";
$a[1] = "2";
$a[2] = "3";
print_r($a);

关联数组

$a = ["a"=>"1","b"+>"2"];
////////////////////////////
$a["a"] = "1"

遍历数组

<?php
$b = ["1","2","3"];
$a[0] = "1";
$a[1] = "2";
$a[2] = "3";
foreach ($a as $key => $value) {
    echo $key.": ".$value."\n";
}

image-20241111202717071

多维数组

$a [["a1","a2","a3"],"b","c"];
print_r([0][0]);

#可以嵌套foreach,用if和break组合玩

函数

时间函数:time(),date()

<?php
 var_dump(time());  
$a = date('y-m-d H:i:s');
echo $a;

创建函数

function a(){
    echo date('y-m-d H:i:s');
}
a();

传入参数

function a($b,$c){
    echo $c+$b;
}
a(2,3);
a(2,3.3);

严格模式

declare(strict_types=1);
function a(int $b,int $c){
    echo $c+$b;
}
a(2,3.3);

全局变量

$a = 3;
function an(){
    $b = 2;
    global $a;
    echo $a + $b;
}
an();

static作用域

<?php
function func1(){
    static $a = 0;
    $a++;
    echo $a.PHP_EOL;
}
func1();
func1();
func1();

unset() 删除函数 isset()查询是否有这变量

超级全局变量

image-20241112181036772

$GLOBALS

是一个包含了全局变量的全局组合数组,变量名就是数组的键

print_r($GLOBALS);
$a = 'sss';
$b = 23;
function a(){
    global $a,$b;
    $a = 'www';
    $b = 13;
}
print_r($GLOBALS);
a();
echo $a;
echo $b;

$_SERVER

image-20241112182533502

print_r(_SERVER);

  • 详情查询菜鸟
#接受一个正整数,返回处1与本身的所有因子
<?php
<?php
$b =[];
function func1($a){
    for ($i = 2; $i < $a; $i++) {
        global $b;
        if ($a % $i === 0){
            $b[] = $i;
        }
    }
}
func1(12);
foreach ($b as $c => $d) {
    echo $c." = ".$d."\n";
}

其他运算符

#+号合并
<?php
$a = ["a"=>"b",1=>["c"=>"d"]];
$b = ["w"=>"s"];
print_r($a+$b);

image-20241112192637212

#== 比较两数组是否相等  ===比较两数组键值对,顺序,类型是否相等
<?php
$a = ["w"=>1];
$b = ["w"=>"1"];
var_dump($a==$b);
var_dump($a===$b);

!=和!==使用方法与上面一样,<,>也是

三元运算符

$a = 10;
$b = isset($a)? $a:"no";

空合并运算符

image-20241112194619423

组合比较符

<=>

image-20241112195509118

比较

数据类型的比较

image-20241112195846945

if (42 == "42"){
    echo "true";
}
/////////////////
if (42 === "42"){
    echo "true"
}

可用gettype()只比较数据类型

比较underfined,0,false,null,空值

<?php
$a = NULL;
var_dump(!isset($a));
var_dump(is_NULL($a));	//不定义$a要报错
var_dump(empty($b))		//empty()不定义变量也返回True

字符串相关函数

image-20241112202120024

<?php
$a = "God help thouse who stand in our way";
$b = "12 3";
echo strlen($b);
echo strlen($a);
////////////////////////
echo strpos($a, "h").PHP_EOL;
echo stripos($a, "w").PHP_EOL;
echo strrpos($b, "h").PHP_EOL;
$aa = explode(" ", $a);
var_dump($aa);
echo implode("+", $aa).PHP_EOL;
print_r(str_replace("h","t",$a));

本文作者:Iota @ Iotaの小屋

本文发布时间:2023-03-15 11:00:00

本文版权:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

留言