这可能吗?我看到一些原生的php函数可以做到这一点。例如:strpos()
可以返回0,这显然是正确的。使函数返回0和true
回答
编辑
当手动说,一些功能可以返回两个整数0和布尔假,这意味着它可以返回任整数0
或以任何给定呼叫布尔false
(不是两个)。 PHP不是严格键入的,在不同情况下函数可以返回不同的类型。例如,下面的函数返回0
或false
,取决于传递的参数是否为非负或不:
function myfunc($arg) {
if ($arg >= 0)
return 0;
else
return false;
}
原始
PHP没有多重回报。你有两个选择:
返回复合值而不是
function myfunc() {
return array(0, true); //return array
}
class MyOutputHolder {
private $number;
private $truth;
function getNumber { return $this->number; }
function getTruth { return $this->truth; }
function __construct($number, $truth) {
$this->number = $number;
$this->truth = $truth;
}
}
function myfunc() {
return new MyOutputHolder(0, true); //return object
}
第三种可能性是自定义资源,但必须在内部实现(在扩展)。
使用输出参数
function myfunc(&$outnumber, &$outtruth) {
$outnumber = 0;
$outtruth = true;
}
当然,你只能返回0
或true
并使用只有一个参数。
一个函数只能有一个的返回值。但是,如果需要,您可以返回具有多个值的数组。
这是否算法?
function stupid() {
return "0\0";
};
echo stupid() ."\n";
var_dump(stupid());
if (stupid()) echo "true\n";
echo stupid() + 4 . "\n";
输出:
0
string(2) "0"
true
4
*鸭子*
return 0 && true;
'return 0 and true;'也是有效的php :) – svens 2010-06-30 23:14:29
这将返回(0 && true)的结果,它不是方式将返回两个。 – 2010-06-30 23:15:25
在该表达式中'0'被解释为false,所以'&& true'被忽略。 – 2010-06-30 23:17:53
对于可以为零返回值成功返回的功能,你应该使用类型等价检查。
if(somefunction() !== false) {
}
如果不考虑类型,则将整数零解释为false。例如,假设somefunction返回零。
somefunction() != false
将是错误的,而
somefunction() !== false
为真。
您的困惑是,strpos返回搜索字符串的从零开始的索引。
因此,在这种情况下,0是一个有效的回报,它的意思是“发现在索引0”
如果未找到字符串的话,那么它将返回FALSE。
要注意什么的写在大红色预警对strpos文档页面是非常重要的:
这个函数可以返回布尔 假的,但也可能返回后者评估 非布尔值 FALSE,如0或“”。有关更多 的信息,请参阅 关于布尔值的部分。使用===运算符 测试此 函数的返回值。
ie:0在PHP中不完全是FALSE。这是PHP的基础。 0 == FALSE但是0!== FALSE
也是为什么PHP可以返回一个数值或布尔值 - 也许这就是您的实际问题 - PHP不是强类型的,您从未指定要返回的内容,所以你可以自由地返回根据功能
我想你误会究竟strpos返回的结果不同的数据类型...
strpos()返回一个整数大于或等于归零,或返回false(如果在字符串中找不到针字符)。
0在任何意义上都不等于真 - 但PHP文档没有提及的是,由于PHP的宽松输入,0可以等于false,除非使用强制类型和值比较的条件运算符。
var_dump(0 == false); // 'true'
var_dump(0 == true); // 'false'
var_dump(0 === false); // 'false'
var_dump(0 === true); // 'false'
var_dump(0 !== false); // 'true'
这就是为什么PHP手册建议你测试从strpos()的返回值“!==假”,因为你要搜索的字符是字符串中的第一个字符,因此该函数返回0.
$string = "_testing";
var_dump(strpos($string, '_')); // 0
var_dump(strpos($string, '_') !== false); // 'true'
var_dump(strpos($string, '_') === true); // 'false'
- 1. Python函数返回True或1作为无,而正确返回False和0
- 2. 如何让0返回true?
- 3. PHP函数不返回TRUE
- 4. MDX SUM函数返回true
- 5. (0 <0)是否返回true?
- 6. php函数返回0吗?
- 7. 函数包()返回0
- 8. 函数== 0的返回值?
- 9. jQuery .val()函数返回0
- 10. mysql_insert_id函数返回0
- 11. 在python函数中使用True,False和None作为返回值
- 12. Wordpress插件回调函数返回0
- 13. PHP的setType函数总是返回true
- 14. 如何让Javascript“isPrototypeOf”函数返回true?
- 15. 获取Ajax函数返回true或false
- 16. 从事件处理函数返回true
- 17. 绑定div如果函数返回true
- 18. 函数返回undefined而不是true/false
- 19. jQuery - show()函数可以返回true吗?
- 20. isset()函数总是返回true
- 21. 函数返回True在OnClick与SweetAlert
- 22. 函数在setTimeout(shouldComponentUpdate)后返回true
- 23. 和除数返回0
- 24. 函数返回0的多维数组
- 25. 函数返回True如果列表中的整数k和n?
- 26. Linearlayout getHeight()返回0但在setOnClickListener中返回true值
- 27. 函数返回True时返回false。编码问题?
- 28. PHP函数返回True时,它应该返回错误
- 29. 卷积函数vDSP_imgfir返回0值
- 30. JavaScript函数总是返回0
你在说什么“原生PHP函数”? – MiffTheFox 2010-06-30 23:08:14
if($ something){return 0;} else {return true;} – anq 2010-06-30 23:08:57
有时候我希望我能评价下来:P – 2010-06-30 23:10:55