随随波逐流の旅店 vernus
← 返回首页

PHP学习

  • 发表于 2023-07-01
  • 字数 9,780 · 约 24 分钟
  • 评论 —

PHP学习

2023-07-01分类·php#php

php学习

echo函数

echo是一个语言结构,使用的时候可以不用加括号,也可以加上括号、

用法
echo""
echo("")
<?
echo "<h2>这是一个PHP!<h2>";
echo("我要学php<br>");
echo "PHP很好玩<br>"
?>

标准输出

这是一个PHP!
我要学php
PHP很好玩

在上面的语言中

<br>换行
<h2>二级标题

当然也可以不用这样

<?php
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");

echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>

标准输出

学习 PHP
在 RUNOOB.COM 学习 PHP
我车的品牌是 Volvo

array[]是数组函数

Array - JavaScript | MDN (mozilla.org)

print函数

print同样是一个语言结构,可以使用括号,也可以不使用

用法

print""
print("")

具体用法和echo一样,就不过多叙述

PHP-EOF(heredoc

PHP-EOF是一种定界符

是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

条件:

  • 必须后面衔接分号,否则编译不通过

  • EOF可以用其他的字符代替,只需要保证结束表示和开始表示一致即可

  • 结束标识必须独自占一行(即必须从行首开始,前后不能衔接多余空白*且前后不能空格

  • 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。

  • 内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

    <?php
    echo <<<EOF
            <p>哈哈</p>
            <p>你猜</p>
            哈哈哈<br>
            你猜我让你猜什么<br>
    EOF
    ?>
    

    在这里的时候

    <br>是换行的
    <p>是便是一段的
    

    202371144329.png

注意:

  • 以<<<EOF为开始标记开始,以EOF结束标记结束,结束标语必须顶头写,不能有任何的缩进和空格,且在结束标记末尾要有分号

  • 开始标记和结束标记相同,不局限于EOF,EOO,EOD,EOT什么的也可以,只要保证结束标记和开始标记不出现在正文中皆可以了

  • 于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在 heredoc 中,变量不需要用连接符 . 或 , 来拼接

  • 后面的好像解析的时候自己解析乱了了,如果想继续看的话可以转(算是光明正得的水一波自己的笔记

  • https://note.youdao.com/s/74MKWr93

  • <?php
    $a="歪比";
    $name= <<<EOF
        "abc"$a
        "123"<br>
    EOF;
    
    echo $name;
    ?>
    

    202371144653.png

PHP数据类型

PHP变量存储不同的数据类型,支持

  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • NULL(空值)
  • Resource(资源类型)

PHP字符串

一个字符串就是一串字符的序列

<?php
$x = "Helloworld!";
echo $x;
echo "<br>";
$x = 'Helloworld!';
echo $x;
?>

标准输出

Helloworld!
Helloworld!

PHP整型

没有小数点的整数

  • 整数必须至少有一个数字 (0-9)
  • 整数不能包含逗号或空格
  • 整数是没有小数点的
  • 整数可以是正数或负数
  • 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
<?php
$x = 5985;
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

var_dump()函数打印输入的字符和其数据类型,

int(5985)
int(-345)
int(140)
int(39)

上面四种都是int所以都输出int

<?php
$b = 3.1;
$c = true;
var_dump($b, $c);
?>
float(3.1) bool(true)

PHP 浮点型

浮点数是带小数部分的数字,或是指数形式。

具体来说和上面的整型差不多

PHP布尔型

布尔型就是TRUE和FALSE

布尔型常用语条件判断

PHP数组

数组可以在一个变量中存储多个值

<?php
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>
array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }

这里的话应该是array数组类型,里面存有三个值,

【0】位置也就是正常的第一个里面是一个有五个字符的字符串volvo,

以此类推

PHP对象

对象数据类型也可以用于存储数据

在PHP中,对象必须声明

首先你要用class函数声明类对象。类是可以包含属性和方法的结构。

然后定义数据类型并在实例化的类中使用数据类型。

<?php
class Car
{
    var $color;
    function __construct($color="green") {
      $this->color = $color;
    }
    function what_color() {
      return $this->color;
    }
}

function print_vars($obj) {
   foreach (get_object_vars($obj) as $prop => $val) {
     echo "\t$prop = $val\n";
   }
}

// 实例一个对象
$herbie = new Car("white");

// 显示 herbie 属性
echo "\therbie: Properties\n";
print_vars($herbie);

?>

</body>
</html>
class:定义一个类。
Car:类名为 Car。
var:定义一个变量。
$color:一个名为 $color 的变量。
__construct:构造函数,用于创建类的实例时自动执行的方法。
function:定义一个函数。
what_color:函数名为 what_color。
return:函数返回值的关键字。
$this:指向当前对象的引用。
print_vars:函数名为 print_vars。
$obj:一个名为 $obj 的变量。
foreach:循环结构用于遍历数组或对象的每个元素。
get_object_vars:返回对象的属性和值的关联数组。
$prop:一个在循环过程中用来存储属性名的变量。
$val:一个在循环过程中用来存储属性值的变量。
echo:输出函数用于打印文本。
new:创建一个新的对象实例。
Car("white"):用 Car 类创建一个新的对象,并将颜色参数设置为 “white”。
herbie:变量名为 herbie。
Properties:文本字符串 " Properties"。
print_vars($herbie):调用 print_vars 函数,并将 herbie 传递给它作为参数。

测试结果

herbie: Properties color = white

PHP-NULL值

NULL表示变量没有值。NULL是数据类型为NULL的值。

NULL值表示一个变量是否为空值。同样可以用于数值空值和NULL值的区别。

可以通过设置变量值为NULL来清空变量数据。

<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>

测试结果

NULL

PHP资源类型

PHP 资源 resource 是一种特殊变量,保存了到外部资源的一个引用。

常见资源数据类型有打开文件、数据库连接、图形画布区域等。

由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

使用 get_resource_type() 函数可以返回资源(resource)类型:

get_resource_type(resource $handle): string 此函数返回一个字符串,用于表示传递给它的 resource 的类型。如果参数不是合法的 resource,将产生错误。

简单来说,php资源类型变量就是用来打开文件、数据库连接、图形化部区域等的一种特殊变量。

PHP类型比较

PHP是弱类型语言,但是也要进行比较

松散比较:==的比较,只比较值不比较类型

严格比较:===的比较,比较值和类型

<?php
if(66=="66"){
    echo "1.值相等";
}
echo PHP_EOL;

if(66==="66"){
    echo "2.类型相等";
}else{
    echo"3.类型不相等";
}
?>

这里面的PHP_EOL是换行符,后面应该会写的

测试结果

1.值相等 3.类型不相等

PHP中比较0、false、null

<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo PHP_EOL;
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo PHP_EOL;
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo PHP_EOL;
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo PHP_EOL;
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo PHP_EOL;
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo PHP_EOL;
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);

测试输出

0 == false: bool(true)
0 === false: bool(false)

0 == null: bool(true)
0 === null: bool(false)

false == null: bool(true)
false === null: bool(false)

"0" == false: bool(true)
"0" === false: bool(false)

"0" == null: bool(false)
"0" === null: bool(false)

"" == false: bool(true)
"" === false: bool(false)

"" == null: bool(true)
"" === null: bool(false)

PHP中比较图

https://www.runoob.com/wp-content/uploads/2019/05/xxxxphp.png

PHP常量

常量是一个简单值的标识符,该数值在脚本中不能改变

一个常来那个使用英文字幕,下划线和数字组成,但数字不能作为首字母出现。(常量名不需要加 $ 修饰符)。

常量在整个脚本中都可以使用。

语法

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
  • name:必选参数,常量名称,即标志符。

  • value:必选参数,常量的值。

  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。

    注意:自 PHP 7.3.0 开始,定义不区分大小写的常量已被弃用。从 PHP 8.0.0 开始,只有 false 是可接受的值,传递 true 将产生一个警告。

<?php
define("aha","有意思捏");
echo aha;
echo '<br>';
echo greeting;
?>

这里的话定义了一个常量aha=有意思捏

greeting没有被定义应该会给出警告但还是会出现

测试结果

有意思捏

Warning: Use of undefined constant greeting; - assumed 'greeting;' (this will throw an Error in a future version of PHP) in D:\Ctf\phpStudy_64\phpstudy_pro\WWW\php\测试.php on line 5
greeting;

常量一经定义就是全局的

<?php
define("GREETING", "欢迎访问 Runoob.com");

function myTest() {
    echo GREETING;
}

myTest();    // 输出 "欢迎访问 Runoob.com"
?>
欢迎访问 Runoob.com

PHP字符串变量

字符串变量用来包含有字符串的值

在创建字符串之后,我们就可以对其进行操作,直接使用或者存储起来。

<?php
$txt="Hello World";
echo $txt;
?>

测试输出:

Hello World

PHP并置运算符

并置运算符.将两个字符串值连接起来

<?php
$txt1="Hello World";
$txt2="hello 个锤子";
echo $txt1 . " " . $txt2;
?>

测试输出

Hello World hello 个锤子

PHP strlen()函数

strlen函数返回字符串的长度(字节数)

<?php
$txt1="Hello World<br>";
$txt2="hello 个锤子<br>";
echo $txt1 . " " . $txt2;
echo strlen($txt1);
?>

测试输出

Hello World
hello 个锤子
15

PHP strpos函数

strpos函数用于在字符串中查找一段指定的文本或者一个字符

如果找到了就会返回第一个匹配的字符位置。如果没找到就会返回FALSE

<?php
$txt1="Hello World<br>";
$txt2="hello 个锤子<br>";
echo strpos($txt1,$txt2);

?>

测试结果


(上面没有忘了写,就是空白

PHP运算符

PHP算术运算符

+-*/%加减乘除取余

-x设置负数和取反

<?php
$x=100;
$y=6;
echo($x+$y);
echo("<br>");

echo($x-$y);
echo("<br>");


echo($x*$y);
echo("<br>");


echo($x/$y);
echo("<br>");


echo($x%$y);
echo("<br>");


echo(-$y);
?>

测试输出

106
94
600
16.666666666667
4
-6

PHP 赋值运算符

在 PHP 中,基本的赋值运算符是 =。它意味着左操作数被设置为右侧表达式的值。也就是说,$x = 5 的值是 5。

PHP 递增/递减运算符

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

PHP 比较运算符

比较操作符可以比较两个值:

运算符 名称 描述 实例
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

PHP 逻辑运算符

运算符 名称 描述 实例
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 数组运算符

运算符 名称 描述
x + y 集合 x 和 y 的集合
x == y 相等 如果 x 和 y 具有相同的键/值对,则返回 true
x === y 恒等 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
x != y 不相等 如果 x 不等于 y,则返回 true
x <> y 不相等 如果 x 不等于 y,则返回 true
x !== y 不恒等 如果 x 不等于 y,则返回 true

三元运算符

另一个条件运算符是"?:"(或三元)运算符 。

语法格式
(expr1) ? (expr2) : (expr3)

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

组合比较符(PHP7+)

PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。

语法格式如下:

$c = $a <=> $b;

解析如下:

  • 如果 $a > $b, 则 $c 的值为 1。
  • 如果 $a == $b, 则 $c 的值为 0。
  • 如果 $a < $b, 则 $c 的值为 -1。

运算符优先级

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

说明:左 = 从左到右,右 = 从右到左。

结合方向 运算符 附加信息
无 clone new clone 和 new
左 [ array()
右 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
无 instanceof 类型
右 ! 逻辑运算符
左 *** / %** 算术运算符
左 + – . 算术运算符和字符串运算符
左 << >> 位运算符
无 == != === !== <> 比较运算符
左 & 位运算符和引用
左 ^ 位运算符
左 | 位运算符
左 && 逻辑运算符
左 || 逻辑运算符
左 ? : 三元运算符
右 **= += -= = /= .= %= &= |= ^= <<= >>= =>* 赋值运算符
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
左 , 多处用到

IF-ELSE

if 语句:在条件成立时执行代码

if...else语句:在条件成立时执行一块代码,条件不成立时执行另一块

if...else...else语句:在若干条件之一成立时执行一个代码块

switch语句:在若干条件之一成立时执行一个代码块

if语句

if (条件)
{
条件成立时执行的代码;
}

if-else语句

if (条件)
{
条件成立时执行的代码;
}
else
{
条件不成立实质性的代码;
}

if-elseif-else语句

if (条件)
{
    if 条件成立时执行的代码;
}
elseif (条件)
{
    elseif 条件成立时执行的代码;
}
else
{
    条件不成立时执行的代码;
}

switch语句

有选择的执行若干代码块之一

<?php
switch(n)
{
case label1:
    执行的语句
    break;
case label2:
    执行的语句
    break;
    default:
    如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>

PHP数组

在PHP中,array()函数用来创建数组:

在PHP中,有三种类型的数组:

  • 数值数组-带有数字ID的数组
  • 关联数组-带有指定的键的数组,每个键关联一个值
  • 多维数组-包含一个或者多个数组 的数组