本篇主要讲述php定界符EOF,PHP 类型比较,PHP 常量,PHP 并置运算符,三元运算符,组合比较符,遍历数值数组,关联数组,遍历关联数组,多维数组。

php定界符EOF

例如:

<?php
$name="yuaneuro";
$a= <<<EOF
        "abc"$name
        "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

运行结果:

"abc"yuaneuro
"123"

注意:

  • 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  • 在 PHP 定界符 EOF 中的任何特殊字符都不需要转义;

PHP 类型比较

在php中有两种比较方式松散严格比较

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

在ctf中有一种很常见的题目:

if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b'])
if (md5($_GET['a']) === md5($_GET['b']))
die('Flag: '.$flag);
else
print 'Wrong.';
}

这里要求传入的a和b不相等,且md5值相等,就可以利用php弱类型绕过
payload:?a[]=1&b[]=2

PHP 常量

设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

  • name:必选参数,常量名称,即标志符。
  • value:必选参数,常量的值
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

例如:

<?php
define("yuaneuro", "欢迎访问 yuaneu.ro");
function myTest() {
    echo yuaneuro;
}
myTest();    // 输出 "欢迎访问 yuaneu.ro"
?>

注意:

  • 常量是全局的
  • 常量名不需要加 $ 修饰符

PHP 并置运算符

  • 并置运算符 (.) 用于把两个字符串值连接起来。

例如:

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . "yuaneuro " . $txt2;
?>

就会输出:Hello world!yuaneuro What a nice day!

三元运算符

  • (expr1) ? (expr2) : (expr3)
    对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

  • 在php5.3+中表达式 expr1 ?: expr3
    在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

  • 在 PHP7+ 版本多了一个 NULL 合并运算符 ??
    $username = $_GET['user'] ?? 'nobody';
    如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值

组合比较符(PHP7+)

也称之为太空船操作符,符号为 <=>

语法 $c = $a <=> $b;
解析如下:

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

遍历数值数组

可以使用 for 循环

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars); //获取数组的长度

for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x]; //ID 键
    echo "<br>";
}
?>

关联数组

  • 关联数组是使用您分配给数组的指定的键的数组

例如:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

调用则可直接使用$age["Peter"]即可

遍历关联数组

可以使用 foreach 循环

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

多维数组

一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建多维数组:

<?php
$sites = array
(
    "yuaneuro"=>array
    (
        "yuaneuro的小站",
        "https://yuaneu.ro"
    ),
    "google"=>array
    (
        "Google搜索",
        "http://www.google.com"
    ),
    "taobao"=>array
    (
        "淘宝",
        "http://www.taobao.com"
    )
);
print("<pre>"); // 格式化输出数组
print_r($sites);
print("</pre>");
?>

输出结果:
多维数组

其他

  • 用户定义的函数和语言关键字对大小写不敏感。
  • 声明常量使用关键字 define,例如
    define(PI,3.14);
    printf("PI = %.2f\n",PI);
  • \\ 是单引号字符串字面量中的一个特殊情况,它给出了一个单引号字符串字面量中没有插入\\n
  • strpos() 函数查找字符串在另一字符串中第一次出现的位置,对大小写敏感。
  • array_keys() 函数返回包含数组中所有键名的一个新数组,如果提供了第二个参数,则只返回键值为该值的键名。
最后修改:2020 年 06 月 19 日
如果觉得我的文章对你有用,请随意赞赏