Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是PHP中推荐的语法吗?_Php - Fatal编程技术网

这是PHP中推荐的语法吗?

这是PHP中推荐的语法吗?,php,Php,我不知道这是允许的,直到最近在测试一些东西时我才发现它是允许的。我也不知道这个特性的文档,所以我现在知道它是如何工作的。如果可以,我应该用它吗?因为它确实减少了代码的重复。考虑下面的例子: //using this feature if( is_numeric( $number = array_pop( $array ) ) ) { //work directly with $number and popped array } //not us

我不知道这是允许的,直到最近在测试一些东西时我才发现它是允许的。我也不知道这个特性的文档,所以我现在知道它是如何工作的。如果可以,我应该用它吗?因为它确实减少了代码的重复。考虑下面的例子:

    //using this feature

    if( is_numeric( $number = array_pop( $array ) ) ) {
        //work directly with $number and popped array
    }

    //not using this feature

    if( is_numeric( end( $array ) ) ) {
        $number = array_pop( $array );
        //had to use an extra statement, plus more processing since what could have been done in just statement had to be done in two
    }

很好地改变了阵列的内部结构。虽然只返回最后一个元素,但这相当于一个“peek”命令。这要看情况而定。如果要缩小数组,请使用
array\u pop
如果要保留原始数组,请使用
end

是,可以在任何位置执行赋值,即使是在
为数字的
内或在
If
条件内。PHP首先执行赋值,结果(被赋值的值)用作
的参数是数值的

这是一种完全有效且受支持的语法,您将看到它的使用。然而,有些人(包括我自己)认为,为了代码的可读性,通常应该避免使用这种语法。在浏览代码时,第一个示例中的作业很容易被遗漏,因此一年后回来时,代码的含义可能更难解释。第二个例子虽然占用了更多的行,但更容易阅读和理解

我试图在文档中找到明确说明这一点的地方。尚未找到引用,但在a中提到了它。

=
是赋值运算符。运算符接受两个(或可能更多)操作数并返回一个值

一个更为人熟知和明显的例子是加法运算符
+
。它接受一个左操作数和一个右操作数并返回一个值。将其用作函数参数时,您不会三思而后行:

is_numeric(1 + 2)
赋值运算符的工作原理与此相同:

is_numeric($foo = 'bar')

赋值运算符的作用是将右操作数赋值给左操作数,表达式作为一个整体返回右操作数。你可以在任何地方使用这个表达式,它几乎无处不在。

看这个问题:呃,好吧,这不是问题的重点…@PeeyushKushwaha好吧,它实际上有很大的不同,我建议你阅读文档以充分理解它。
end
也改变了数组的内部结构:“
end()
array
的内部指针前进到最后一个元素,并返回其值。”@Gumbo我一定是误读了than,因为我从未看到它说它更改了数组的底层结构(end命令)@Woot4Moo我已经理解了这两个函数的作用,这就是为什么我在第二个语句中使用end而不是array_pop,因为我确实想使用popped元素。如果你能更仔细地阅读我编写的代码,你就会明白我在说什么。现在这是一个有用的答案:)