这是一个简单的功能
function check_nickname($item)
{
if (preg_match('/^[a-z\d_]{1,15}$/', $item)) {
return true;
} else {
return false;
}
}
它只返回true或false。
但如果它是假的,我希望它返回False +字符串中的某些文本或其他东西。
if(check_nickname($item))
将获得true / false。但如果它是假的,那我怎么能回复一些文字串呢?
答案 0 :(得分:5)
为此,您需要将变量发送到可在函数内修改的函数。你用引用来做到这一点。示例解释它比单词更好;
function check_nickname($item, &$sometext)
{
if (preg_match('/^[a-z\d_]{1,15}$/', $item)) {
return true;
} else {
$some_text = 'enter your message here';
return false;
}
}
if(!check_nickname($item, $txt))
{
echo $txt; // echoes "enter your message here";
}
答案 1 :(得分:2)
您有几种选择。
您可以更改方法签名以传入字符串引用,例如:
function check_nickname($item, &$output)
并在函数体中将输出设置为您想要的值,例如:$output = "some text";
或者,您也可以返回一个数组(或一个对象),而不仅仅是一个布尔值:
return array(true, "some text");
另一种选择是将此功能封装在一个类中。 这意味着最初要编写更多代码,但会使消费代码更具可读性。
class NickNameChecker {
private $nick;
private $reason;
public function __construct($nickname) {
$this->nick = $nickname;
}
public function check() {
if (preg_match('/^[a-z\d_]{1,15}$/', $this->nick)) {
return true;
}
$this->reason = "some text";
return false;
}
public function getReason() {
return $this->reason;
}
}
// usage:
$checker = new NickNameChecker("brian griffin");
if (!$checker->check()) {
echo $checker->getReason();
}
答案 2 :(得分:0)
干净的方法可能是使用异常机制。如果为false,则会抛出包含所需消息的异常。
答案 3 :(得分:0)
我只是
if (!check_nickname($item)) $message = "Martian names not accepted!";
答案 4 :(得分:-1)
return array(false, "some other string");
然后myFunction()[0]
false
和myFunction()[1]
"some other string"
。