免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7352 | 回复: 11
打印 上一主题 下一主题

php函数的return 参数值这两种写法有何区别? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-22 16:28 |只看该作者 |倒序浏览
<?php
function add($arv1, $arv2) {
   $arr = $arv1+$arv2;
   return($arr);
}

echo add(1,5);
?>

上面是用return来返回值的示例代码,输出结果为6,这里我将return的参数值包括在括号内,还有一种写法是这样的:
return $arr;

这里不包括在括号内,经测试,运行结果是一样的,但这两者应该有所区别吧(不指运行结果,是指其他方面),但手册中没看到详细的说明,望大家指点一二。

还看到另外一种写法,就是直接写上return,但我自己测来测去的,发现无法得到返回值的,但的确有这样的写法的,请教一下:在什么情况下这样写能得到返回值?

比如下面的示例就是无法得到返回值的:
<?php
function add($arv1, $arv2) {
   $arr = $arv1*$arv2;
   return;
}

echo add(1,5);
?>

但我看有些开源代码中是有这样写法的,我想这样写应该有个先决条件的吧。

论坛徽章:
0
2 [报告]
发表于 2007-08-22 16:56 |只看该作者
return 是语言结构 (language structure),所以,和 echo/require/include 等等一样,是不需要括号的。

直接写 return 就什么都不返回,直接结束这个函数。也可以理解成返回 NULL。

另外,关于 return 带括号和不带括号的区别,实在是属于「回」字有几种写法这类问题……

论坛徽章:
0
3 [报告]
发表于 2007-08-22 23:48 |只看该作者
这并非「回」字有几种写法


return
如果在一个函数中调用 return() 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。return() 也会终止 eval() 语句或者脚本文件的执行。

如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include() 的或者 require() 的,则控制交回调用文件。此外,如果当前脚本是被 include() 的,则 return() 的值会被当作 include() 调用的返回值。如果在主脚本文件中调用 return(),则脚本中止运行。如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的,则此脚本文件中止运行。

更多信息见返回值。

注: 注意既然 return() 是语言结构而不是函数,仅在参数包含表达式时才需要用括号将其括起来。当返回一个变量时通常不用括号,也建议不要用,这样可以降低 PHP 的负担。

注: 当用引用返回值时永远不要使用括号,这样行不通。只能通过引用返回变量,而不是语句的结果。如果使用 return ($a); 时其实不是返回一个变量,而是表达式 ($a) 的值(当然,此时该值也正是 $a 的值)。

论坛徽章:
0
4 [报告]
发表于 2007-08-23 08:53 |只看该作者
从我个人角度来看。

我觉得只要知道两者一个能返回想要的值,一个返回null就可以了。

每个人都有自己习惯。我一般不会写return ;,,,,一般要么返回数据,要么就是return false;

没有必要在这个上面花费太多时间。

论坛徽章:
0
5 [报告]
发表于 2007-08-23 12:36 |只看该作者
原帖由 doudoukiki 于 2007-8-23 01:48 发表
这并非「回」字有几种写法


return
如果在一个函数中调用 return() 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。return() 也会终止 eval() 语句或者脚本文件的执行。

如果在全局范围中 ...


除了多一个括号运算之外,没有任何区别,那么不是「回」字的写法是什么……

论坛徽章:
0
6 [报告]
发表于 2007-08-23 13:08 |只看该作者
从两个角度看吧 ~

其实括号与return是无关的 .

论坛徽章:
0
7 [报告]
发表于 2007-08-23 14:33 |只看该作者
汗,回复的别的贴子,编辑一下跑这来了。

[ 本帖最后由 arcow 于 2007-8-23 14:39 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-08-24 15:41 |只看该作者
echo也可以写成echo()
include('aa.php');
include 'aa.php';

论坛徽章:
0
9 [报告]
发表于 2007-08-24 15:48 |只看该作者
一种有返回值,
一种没有返回值。

论坛徽章:
0
10 [报告]
发表于 2007-09-03 16:17 |只看该作者
谢谢楼上诸位的热心指点,明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP