我应该在这里做什么?



=& 参考

参考任务操作员在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、来源:PHP手册):

Integers, Floats, Strings, Arrays & Objects for 三路比较变量。

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
// Comparison is case-sensitive
echo "B" <=> "a"; // -1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

其他回答

航天运营商 <=> (添加到 PHP 7)

<=> 航天运营商的例子(PHP 7、来源:PHP手册):

Integers, Floats, Strings, Arrays & Objects for 三路比较变量。

// Integers
echo 10 <=> 10; // 0
echo 10 <=> 20; // -1
echo 20 <=> 10; // 1

// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1

// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
// Comparison is case-sensitive
echo "B" <=> "a"; // -1

echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1

// Arrays
echo [] <=> []; // 0
echo [1, 2, 3] <=> [1, 2, 3]; // 0
echo [1, 2, 3] <=> []; // 1
echo [1, 2, 3] <=> [1, 2, 1]; // 1
echo [1, 2, 3] <=> [1, 2, 4]; // -1

// Objects
$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 0

$a = (object) ["a" => "b"]; 
$b = (object) ["a" => "c"]; 
echo $a <=> $b; // -1

$a = (object) ["a" => "c"]; 
$b = (object) ["a" => "b"]; 
echo $a <=> $b; // 1

// only values are compared
$a = (object) ["a" => "b"]; 
$b = (object) ["b" => "b"]; 
echo $a <=> $b; // 1

三 DOTS 作为 Splat Operator (...) (自 PHP 5.6 以来)

PHP 有一个操作员“......(三点)被称为Splat操作员,它被用来通过一个函数中的参数的任意数量,这种函数被称为变量函数。

例子1:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
 
echo calculateNumbers(10, 20, 30, 40, 50);
 
//Output 150
?>

计算的每个论点 数字() 函数通过 $params 作为一个序列,当使用 "... ".

有很多不同的方式使用“......”运营商,以下是几个例子:

例子2:

<?php
function calculateNumbers($no1, $no2, $no3, $no4, $no5){
    $total = $no1 + $no2 + $no3 + $no4 + $no5;
    return $total;
}
 
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers(...$numbers);
 
//Output 150
?>

例子3:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
$no1 = 70;
$numbers = array(10, 20, 30, 40, 50);
echo calculateNumbers($no1, ...$numbers);
 
//Output 220
?>

例子4:

<?php
function calculateNumbers(...$params){
    $total = 0;
    foreach($params as $v){
        $total = $total + $v;
    }
    return $total;
}
 
$numbers1 = array(10, 20, 30, 40, 50);
$numbers2 = array(100, 200, 300, 400, 500);
echo calculateNumbers(...$numbers1, ...$numbers2);
 
//Output 1650
 
?>

值得注意的是,变量参数不能用所谓的论点瞄准。

例子5:

<?php
function sumIntegers(int ...$params): int {
    $sum = 0;
    foreach($params as $value){
        $sum += $value;
    }
    return $sum;
}


echo sumIntegers(params: [1, 2, 3, 4]);     
// $params will be equal to ['params' => [1, 2, 3, 4]] in sumIntegers
// throws TypeError sumIntegers(): Argument #1 must be of type int, array given 

echo sumIntegers(arbitrary_name: 1, another_name: 2);
// $params will be equal to ['arbitrary_name' => 1, 'another_name' => 2] in sumIntegers
// Outputs: 3 
?>

使用未包装的连接序列作为函数呼叫的参数具有相同的效果,如使用每个关键值对作为一个名为论点的函数呼叫。

例子6:

<?php
function fullName(string $first_name, ?string $middle_name = null, ?string $last_name = null): string {
    return trim("$first_name|$middle_name|$last_name");
}

$params = ['first_name' => 'John', 'last_name' => 'Doe'];
echo fullName(...$params);
// same as fullName(first_name: 'John', last_name: 'Doe')

// outputs 'John||Doe'
?>

它可以用来将命名的论点转移到某种东西,如一个无缝函数呼叫或一个班级。

例子7:

<?php
function throw_exception(string $exception, ...$parameters) {
    throw new $exception(...$parameters);
}

throw_exception(exception: 'Exception', code: 123);
// executes throw new Exception(...['code' => 123])
// which is the same as throw new Exception(code: 123);
?>

比特币运营商

什么是比特? 比特是 1 或 0 的代表性 基本上是 OFF(0) 和 ON(1)

什么是比特?一个比特是由8位组成的,一个比特的最高值是255,这意味着每个比特是设置的。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

此分類上一篇: 1 Byte

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 位元)

一些好理解的例子

“和”运营商: &

$a =  9;
$b = 10;
echo $a & $b;

这将产生第8号为什么? 好吧,让我们看看使用我们的表例子。

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

所以你可以从桌子上看到他们共享的唯一片段是8位。

第二个例子

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

兩個共享比特是32和4,當添加一起返回36。

“黄金”运营商: <unk>

$a =  9;
$b = 10;
echo $a | $b;

第11章 为什么?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

您将注意到,我们有 3 个字符串设置,在 8、2 和 1 个列中。

问答:

什么是“”意思?


答案:

编制:

要了解这一点,我们必须知道什么是协同序列,当一个常规程序员认为一个序列时出现的第一件事(在PHP中)会是类似于:

$myArray1 = array(2016, "hello", 33);//option 1

$myArray2 = [2016, "hello", 33];//option 2

$myArray3 = [];//option 3
$myArray3[] = 2016; 
$myArray3[] = "hello"; 
$myArray3[] = 33;

在哪里,如果我们想在代码的某些后续部分召唤序列,我们可以:

echo $myArray1[1];// output: hello
echo $myArray2[1];// output: hello
echo $myArray3[1];// output: hello

差异(序列和附属序列之间):

在附属序列的声明中,您不只是将您想要插入序列的值,但您还将所需的指数值(称为密钥)插入,当您在代码的后部分召唤序列时使用。

例如:

$myArray1 = array( 
    "Year" => 2016, 
    "Greetings" => "hello", 
    "Integer_value" => 33);//option 1

$myArray2 = [ 
    "Year" =>  2016, 
    "Greetings" => "hello", 
    "Integer_value" => 33];//option 2

$myArray3 = [];//option 3
$myArray3["Year"] = 2016; 
$myArray3["Greetings"] = "hello"; 
$myArray3["Integer_value"] = 33;

现在,以获得与以前相同的产量,关键值将用于雷索指数:

echo $myArray1["Greetings"];// output: hello
echo $myArray2["Greetings"];// output: hello
echo $myArray3["Greetings"];// output: hello

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

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

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