是否可以返回一个数组,但也告诉php它应该是假的?
示例:
if ($res = a_function()) {
// all good
}
else {
echo getErrorByNumber($res['err_no']);
}
a_function
:
function a_function() {
// do fancy stuff
if (xy) return true;
return array('err_no' => 1);
}
我想它不可能,因为php总是为return true
取一个数组,对吗?
答案 0 :(得分:2)
很多方法。可能是首选的,与true
进行比较,类型检查===
:
if(($res = a_function()) === true) {
// all good
}
else {
echo getErrorByNumber($res['err_no']);
}
非空数组始终为真:
if($res = a_function() && !is_array($res)) {
// all good
}
else {
echo getErrorByNumber($res['err_no']);
}
或者翻转它:
if(is_array($res)) { //or isset($res['err_no'])
echo getErrorByNumber($res['err_no']);
}
else {
// all good
}
答案 1 :(得分:1)
我会用byref参数解决这个问题:
function foo(&$errors)
{
if (allWentWell())
{
$errors = null;
return true;
}
else
{
$errors = array('err_no' => 007);
return false;
}
}
// call the function
if (foo($errors))
{
}
else
{
echo getErrorByNumber($errors['err_no']);
}
这样您就不必区分不同的可能返回类型,也不会遇到类型杂耍问题。它也更具可读性,你知道没有文档的$ errors变量里面有什么。我写了一篇小文章,解释为什么mixed-typed return values会如此危险。