Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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 什么';‘return;’之间的区别是什么没有回报?_Php_Function_Methods_Return Value - Fatal编程技术网

Php 什么';‘return;’之间的区别是什么没有回报?

Php 什么';‘return;’之间的区别是什么没有回报?,php,function,methods,return-value,Php,Function,Methods,Return Value,以下两者之间是否有区别: function someMethod( $someArg ) { // some code return; } 及 两者都将NULL作为“返回值”。有区别吗?什么是PHP内部的?演出速度 编辑 我问,因为在Zend框架()中,他们使用return 只要调用了return,函数调用就会终止。这就像是一次休息。因此,如果您的返回在中间,它将获得一些性能,因为其余的函数未被执行。 对于其余部分,使用显式返回而不是隐式返回通常更好(在可读性方面)。如果将返回值保留在

以下两者之间是否有区别:

function someMethod( $someArg ) {
  // some code
  return;
}

两者都将
NULL
作为“返回值”。有区别吗?什么是PHP内部的?演出速度

编辑

我问,因为在Zend框架()中,他们使用
return据我所知,这没有什么区别


返回
主要用于从if/else、while或for循环中中断,而不返回任何内容。

在您的示例中,没有区别

但是,
return
将终止函数,因此您可以选择在
return
语句之后跳过代码(这就是它的用途)

在您的示例中,如果您希望看到
返回值
,这是个人的偏好

此外,在一些语言(如Perl)中,最后一个表达式是“隐式”返回值,因此您甚至不需要使用“return”。(这在其他语言如C++中是行不通的)但是< /P>
只要调用了
return
,函数调用就会终止。这就像是一次休息。因此,如果您的返回在中间,它将获得一些性能,因为其余的函数未被执行。
对于其余部分,使用显式返回而不是隐式返回通常更好(在可读性方面)。如果将返回值保留在函数中,您将知道对该函数的调用可能会期望返回值。

没有重大区别,您可以使用
return
提前中断函数调用。无论哪种方式,它们都将返回
NULL
,这是严格用于工作流的。

功能上没有区别,但在函数中有一个明显的退出点(返回点)总是很好的。一些计算机科学学院认为所有的函数和方法都应该有一个精确的出口,而且只有一个出口

如果您将来需要添加一个返回值,那么如果您包含一个空的返回值,那么代码中有一个明显的点已经为您选定


但正如我所说,从功能的角度来看,没有太大的区别

我不是专家,但我会说,如果两者之间的差异可以忽略不计;有人可能会争辩说,你通过放回音来消耗被咬的东西;或返回错误;在函数的末尾

通常我使用return加上

return true;


如果我不想返回任何东西,或者我想返回false,我只是不在PHP和Python等语言中使用return<代码>返回可用于过早中断函数


但是,当选择的编程语言是C/C++、Java、C#时,会有一个区别,其中不返回表示
void

返回将中断/退出函数(将中断视为开关/案例)

php代码

<?php

function a() {
   echo 1;
   return;
}

function b() {
   echo 2;
}

因此显式return语句生成一条额外的返回指令。否则没有区别。

我有时喜欢使用“empty”
return
作为函数的最后一条语句,友好地提醒函数不应该返回任何值

class foo {
  var $name;

  public function bar($x) {
    $this->name = $x;
    return;
  }
}
在ADA中,您有
过程
函数
。第一个不返回任何数据,它们只执行一些语句。这些函数可以返回数据

因此,一个空的
返回将类似于“这是一个过程”。

非常有趣的是(我认为),有一个返回类型会有很大的不同。三种类型的返回
null
会抛出三种不同的错误:

function foo() : string {
  // return nothing

  // TypeError exception: Return value of foo() must be of the type string, none returned
}

function foo() : string {
  return;

  // Fatal error: A function with return type must return a value
}

function foo() : string {
  return null;

  // TypeError exception: Return value of foo() must be of the type string, null returned
}

我不会猜到,因为所有错误都是运行时的,所有返回值在技术上都是
null

,我可能是错的,因为我对perl语法不太清楚,但是foo和foo2不会返回相同的值。foo返回的值为12,其中foo2在Perl中不返回任何内容,返回值是“上次计算的表达式”的值,因此两者都将返回相同的内容。(奇怪,但那是Perl;-)但是
return
返回false非常不同。是的,它们返回将返回null和false;将返回false;我不明白你的意思是什么?你说:“如果我不想返回任何东西或者我想返回false,我就不使用return。”。如果你想返回false,你应该返回一些东西:
false
。是的,但是作为布尔值计算,即true或false null与false是一样的,不是吗?是的,我们都知道它是。但我在我的回答中寻找细节。没关系。我们都知道我们的意思。局部返回值
NULL
FALSE
将执行非常不同的操作。其他时候,他们做的完全一样。这正是我的意思。我可以用
return
对性能没有好处,因为它添加了额外的命令。如果没有
返回,则仍然在内部指定了一个返回。我读对了吗?@Rudie:不,没有更糟,因为只执行了第一个
returnnull
。但即使是这样,你也不会注意到区别。不要过早地优化。@Marcel,这就是为什么我没有说它更糟糕,但“对性能来说并不更好”。我不是想优化,只是好奇而已。我听说这很好。@Marcel-@stereofrog是正确的。性能差异是可以忽略的,可以认为是零,因为第二次返回甚至不会执行。第二次返回可能不会执行,但可能会发生额外的解析等情况。仅仅因为有些东西很小,并不意味着你应该忽略它。如果您只是遵循省略不必要的返回语句的实践(最佳实践???),就不能教条地称这种过早优化
也表示空白,不是吗?
null
未定义的
。我可能是疯了
function someMethod( $someArg ) {
    if(condition) {
        return; // will exit function
    }

    // could be more code
}
<?php

function a() {
   echo 1;
   return;
}

function b() {
   echo 2;
}
.FUNCTION a
        ECHO                     1
        RETURN                   NULL
        RETURN                   NULL
        HANDLE_EXCEPTION         
.END FUNCTION

.FUNCTION b
        ECHO                     2
        RETURN                   NULL
        HANDLE_EXCEPTION         
.END FUNCTION
class foo {
  var $name;

  public function bar($x) {
    $this->name = $x;
    return;
  }
}
function foo() : string {
  // return nothing

  // TypeError exception: Return value of foo() must be of the type string, none returned
}

function foo() : string {
  return;

  // Fatal error: A function with return type must return a value
}

function foo() : string {
  return null;

  // TypeError exception: Return value of foo() must be of the type string, null returned
}