我应该在这里做什么?



=& 参考

参考任务操作员在PHP, =& 什么意思是“=&”和“&="操作员在PHP? 什么意思是“&=”和“=&”操作员在PHP?

















PHP 中的奇怪打印行为?



= 任命运营商

三种不同的平等


如何区分PHP平等(==双等)和身份(===三等)比较操作员?PHP!=和 ==操作员3个不同的平等类型和(严格)较大的/较小的比较在PHP


=== 比较运营商






比特币运营商


上一篇: 逻辑运营商












[ ] Arrays (自 PHP 5.4 以来简短的合成)


PHP 短标签是否可用?


二角形字符范围




# One-line shell 风格评论


NullSafe Operator 通话(自 PHP 8.0 以来)

PHP 中有“零安全操作员”吗?



当前回答

<=> 航天运营商

在 PHP 7 中添加

太空运营商 <=> 是 PHP 7 中添加的最新比较运营商。 它是一种与平等运营商相同的优先事项的非协作二进制运营商(==,!=, ===,!==)。 该运营商允许左手和右手运营商之间的简单三路比较。

运营商以一个完整的表达结果:

0 如果两位操作员均等 低于 0 如果左手操作员低于右手操作员 大于 0 如果左手操作员高于右手操作员

吉。

1 <=> 1; // 0
1 <=> 2; // -1
2 <=> 1; // 1

使用这个运营商的好实用应用将是比较类型的呼叫回归,预计将基于两个值之间的三路比较,返回零、负或积极的整体。

在PHP 7之前,你会写...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    if ($a < $b) {
        return -1;
    } elseif ($a > $b) {
        return 1;
    } else {
        return 0;
    }
});

因为 PHP 7 你可以写...

$arr = [4,2,1,3];

usort($arr, function ($a, $b) {
    return $a <=> $b;
    // return $b <=> $a; // for reversing order
});

其他回答

什么是 \ (backslash) 符号在 PHP

它用于逃避字符串类型或更改特定案例:

例子:

在这里使用 \r\n 和 \n 转到新行(如输入按钮)


echo "Hello world \n\r I am Herakl";

否则,您可以使用 PHP_EOL. 有一些例外. 首先,它只能在两个引用(")状态使用。

echo " Hello \\ I am robot";

在 stackoverflow 中,它看不见正确。

Backslashes 也使用在名称空间或使用条件名称:

namespace App\Http\Controllers;

use App\Models;

此外,您还应该参观关于 https://www.php.net/manual/en/function.addslashes.php 的漏洞

Syntax Name Description
x == y Equality true if x and y have the same key/value pairs
x != y Inequality true if x is not equal to y
x === y Identity true if x and y have the same key/value pairs
in the same order and of the same types
x !== y Non-identity true if x is not identical to y
x <=> y Spaceship 0 if x is equal to y, greater than 0 if x > y, less than 0 if x < y
++x Pre-increment Increments x by one, then returns x
x++ Post-increment Returns x, then increments x by one
--x Pre-decrement Decrements x by one, then returns x
x-- Post-decrement Returns x, then decrements x by one
x and y And true if both x and y are true. If x=6, y=3 then
(x < 10 and y > 1) returns true
x && y And true if both x and y are true. If x=6, y=3 then
(x < 10 && y > 1) returns true
x or y Or true if any of x or y are true. If x=6, y=3 then
(x < 10 or y > 10) returns true
x || y Or true if any of x or y are true. If x=6, y=3 then
(x < 3 || y > 1) returns true
a . b Concatenation Concatenate two strings: "Hi" . "Ha"

零加热运营商(??)

此操作员已在 PHP 7.0 中添加到常见情况下,需要与 isset() 一起使用终端操作员,如果存在并非 NULL,则将其第一个操作员返回;否则将其第二个操作员返回。

<?php
// Fetches the value of $_GET['user'] and returns 'nobody'
// if it does not exist.
$username = $_GET['user'] ?? 'nobody';
// This is equivalent to:
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

// Coalescing can be chained: this will return the first
// defined value out of $_GET['user'], $_POST['user'], and
// 'nobody'.
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
?>

__DIR__: 文件的目录. 如果在其中使用,则包含的文件的目录将返回. 这相当于 dirname(__FILE__). 该目录名称没有追踪漏洞,除非它是根目录。

__CLASS__: 类名. (添加到 PHP 4.3.0) 由于 PHP 5 这个常态返回类名,因为它被宣言(案例敏感)。 在 PHP 4 它的值总是低下。 类名包含它被宣言的名称空间(例如 Foo\Bar)。 请注意,因为 PHP 5.4 __CLASS__ 也在特征中工作. 当用于特征方法时, __CLASS__ 是使用特征的类名。

__NAMESPACE__:当前名称空间的名称(案例敏感)。此连续定义为编译时间(在 PHP 5.3.0 中添加)。

运营商类型

instanceof 是用来确定一个 PHP 变量是否是一个特定的类别的即时对象。

<?php
class mclass { }
class sclass { }
$a = new mclass;
var_dump($a instanceof mclass);
var_dump($a instanceof sclass);

上面的例子将产生:

bool(true)
bool(false)

原因: 上例 $a 是 mclass 的对象,所以只使用 mclass 数据而不是 sclass 的例子。

继承的例子

<?php 
class pclass { } 
class childclass extends pclass { } 
$a = new childclass; 
var_dump($a instanceof childclass); 
var_dump($a instanceof pclass);

上面的例子将产生:

bool(true)
bool(true)

与克隆的例子

<?php 
class cloneable { } 
$a = new cloneable;
$b = clone $a; 
var_dump($a instanceof cloneable); 
var_dump($b instanceof cloneable);

上面的例子将产生:

bool(true)
bool(true)