php函数 返回值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php函数 返回值相关的知识,希望对你有一定的参考价值。

<?php
function longdate($timestamp)

return date("l F jS Y", $timestamp);

echo longdate(time());
?>
本人是菜鸟,零基础学php,有上面这样一段代码。
问题1:返回值不是说是计算后的结果吗,为什么这里可以不用任何计算直接在中括号内用return呢?
问题2:有个口诀是“返回函数名”为什么这里return后面又有一堆不知道什么来的东西呢?
问题3:echo后面time里外都有括弧是什么意思呢?

麻烦啦~小弟感激不尽

return date("l F jS Y", $timestamp);

是先运行date函数,然后把date函数的返回值做为此函数的返回值,date是系统函数,你可以百度一下它的原型
同理
echo longdate(time());

是先运行time(),把它的返回值做为参数赋给longdate,最后输出longdate的返回值追问

请问可以不返回吗?就是说函数是不是一定要求返回的?那内置函数好像又没有返回的?
还有就是见到echo "",又见过直接的有什么区别呢?
谢谢

追答

函数可以没有返回值,没有问题
这里面用到的两个系统函数date()和time()都是有返回值的
PHP标签内的部分要影响页面必须使用输出方法echo,print之类的
PHP标签外的部分是要原样发送到浏览器的

追问

我就想说他搞这个函数的目的是什么呢?就是输出时间吗?那为什么不直接用eho date("l F jS Y", $timestamp);不就是输出现在的时间了吗?还要搞一个自定义函数?

追答

我不知道你这段代码的上下文环境, 不过一般定义用户函数的目的都是为了能够重复调用,能保证各处逻辑的一致性
如果这个函数只为了完成这一个操作,确实是有点蛋疼了

参考技术A 问题1:返回值不是说是计算后的结果吗,为什么这里可以不用任何计算直接在中括号内用return呢?
不用任何计算也是计算,你的例子中是函数计算,计算函数date的结果,是一定形式的日期字符串,然后再返回这个字符串(Friday October 11th 2013)。

问题2:有个口诀是“返回函数名”为什么这里return后面又有一堆不知道什么来的东西呢?
返回的是一个数值,return后面无论是什么,都可以计算出一个结果,只把结果(Friday October 11th 2013)作为返回,

问题3:echo后面time里外都有括弧是什么意思呢?
time()表示函数time的结果,函数都要有括号,没有任何参数的时候使用一对空的括号。追问

请问可以不返回吗?就是说函数是不是一定要求返回的?那内置函数好像又没有返回的?
还有就是见到echo "",又见过直接的有什么区别呢?
谢谢

参考技术B oh,my god!
问题1:return就是返回值,不必非要是计算后的结果。return后面可以是空(没有返回值),可以是变量(返回变量的值),可以是表达式(返回表达式运算的结果)
问题2:return后面跟了一堆叫表达式的东西,表达式是一个内置函数,此函数运算的结果是日期格式的数据
问题3:time()也是一个内置函数,其结果作为自定义函数longdate的参数参与运算,再将longdate的结果打印出来追问

请问可以不返回吗?就是说函数是不是一定要求返回的?那内置函数好像又没有返回的?
还有就是见到echo "",又见过直接的有什么区别呢?
谢谢

参考技术C 1、不是,该函数没有用到计算,只是将特定时间戳转换成特定格式的结果.

2、return 后面可以是任何内容。data()是php 的一个内置函数,主要是时间格式转换功能

3、time() 是 php 的一个内置函数,返回当前服务器的时间戳(一个有10位数子组成的字符串),longdate()是一个自定义函数调用时给了一个参数就是time()的返回值,最后将longdate() 的返回值进程输出追问

请问可以不返回吗?就是说函数是不是一定要求返回的?那内置函数好像又没有返回的?
还有就是见到echo "",又见过直接的有什么区别呢?
谢谢

追答

可以直接使用。
程序设计中,建立函数的目的就是为了能重复使用相同的代码来处理不同的数据.

函数和命令行是不同的

echo() 实际上不是一个函数,因此您无需对其使用括号。不过,如果您希望向 echo() 传递一个或多个参数,那么使用括号会发生解析错误,简单的说就像 if 语句一样

参考技术D

1.

function a ($b)

    return $b;
//这样也是完全合法的,但这么整是没意义啊。
2 你说的返回函数名我理解大概是这样
function FunName()

    $funname=$something+$someone;
    rerurn $funname;
//如果是理解这样话 明显是个误导。返回和函数名一样的东西,既没有必要,也没一点实用的价值。返回值在函数中一般是根据返回的类型,如果返回时字符串一般就$str 数组就$array这样的。
3 如果写成 echo longdate(  time()   )  就好看了,
你所谓的外面的括弧,是longdate() ,这个样子,你在用longdate的时候不是应该longdate($some)吗,这里的 time()是作为传入参数啊,
4.刚起步的话,一定得多写,不要懒,写的越多理解的越快,别以为简单能看懂的写不写不重要。这都是血淋林的教训。

追问

请问可以不返回吗?就是说函数是不是一定要求返回的?那内置函数好像又没有返回的?
还有就是见到echo "",又见过直接的有什么区别呢?
谢谢

PHP中的mysql_query()函数的返回值是啥?

$insert=mysql_query($sql,$conn);

if ($insert)
echo("<script type='text/javascript'> alert('写入成功!');location.href='index.php';</script>");
else
echo("<script type='text/javascript'> alert('写入失败!');location.href='insert.php';</script>");


问题:
$insert=mysql_query($sql,$conn)返回的是一个结果集,同时其返回值又能被if判断,又是布尔类型的变量?那结果集和布尔型变量有什么关系?我看到百度上还有人说是指针变量...到底是什么?怎么能干这么多事...

布尔值 NULL ,false, 0 ," " ,都代表为假,

mysql_query 对于 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,打印出来是 类似于 “Resource id #3" 的一个字符串,所以就为真了。

这个 “Resource id #3" 就好比是一个指示牌, 连接着你要操作的数据,用函数操作他时,例如:mysql_fetch_array($insert), 他就把从数据库调出来的结果带到函数里做参数了。
参考技术A 对SELECT, SHOW, DESCRIBE, EXPLAIN 等语句,如果成功,返回类型为resource的值,如果失败,返回布尔型的FALSE

对UPDATE, DELETE, DROP,INSERT等语句,成功返回TRUE,失败返回FALSE
参考技术B 多看手册
mysql_query一般是用过来给MYSQL递交一个SQL语句去执行的

仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。
参考技术C mysql_select_db() 函数设置活动的 MySQL 数据库。

如果成功,则该函数返回 true。如果失败,则返回 false。
参考技术D 根据SQL语句类型,如果是SELECT语句那么返回是结果集(result类型),如果是INSERT,UPDATE这些类型则返回是布尔值(BOOL值),可以参考下手册。

以上是关于php函数 返回值的主要内容,如果未能解决你的问题,请参考以下文章

PHP递归函数返回值

PHP中的fopen()函数的返回值是啥?

php中fopen函数的返回值是啥啊?

PHP中的类型提示返回值/函数

php从函数返回中访问数组值

php函数如何返回数组啊, 比如,