Php 从函数中获取多个数据

Php 从函数中获取多个数据,php,Php,这是一个简单的函数 function check_nickname($item) { if (preg_match('/^[a-z\d_]{1,15}$/', $item)) { return true; } else { return false; } } 它只返回true或false 但是如果它是false,我希望它返回false+字符串中的一些文本或其他内容 if(check_nickname($item)) 将得到正确/错误。但是如果它为false,那

这是一个简单的函数

function check_nickname($item)
{
    if (preg_match('/^[a-z\d_]{1,15}$/', $item)) {
    return true;
  } else {
    return false;
  }
}
它只返回true或false

但是如果它是false,我希望它返回false+字符串中的一些文本或其他内容

if(check_nickname($item))

将得到正确/错误。但是如果它为false,那么我如何回显一些文本字符串呢?

您有几个选项

1.通过引用传递参数 您可以将方法签名更改为传入字符串引用,例如:

function check_nickname($item, &$output)
在函数体中,您可以将输出设置为所需,例如:
$output=“some text”

2.返回数组 或者,也可以返回数组(或对象),而不仅仅是布尔值:

return array(true, "some text");
3.在类中封装功能 另一种选择是将此功能封装在类中。 这意味着最初需要编写更多的代码,但会使消费代码更具可读性

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();
}

你有几个选择

1.通过引用传递参数 您可以将方法签名更改为传入字符串引用,例如:

function check_nickname($item, &$output)
在函数体中,您可以将输出设置为所需,例如:
$output=“some text”

2.返回数组 或者,也可以返回数组(或对象),而不仅仅是布尔值:

return array(true, "some text");
3.在类中封装功能 另一种选择是将此功能封装在类中。 这意味着最初需要编写更多的代码,但会使消费代码更具可读性

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();
}

为此,您需要向函数发送一个变量,该变量可以在函数中修改。你可以用推荐信。例子比文字更能说明问题

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";
}

为此,您需要向函数发送一个变量,该变量可以在函数中修改。你可以用推荐信。例子比文字更能说明问题

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";
}
然后
myFunction()[0]
用于
false
myFunction()[1]
用于
“其他字符串”


然后
myFunction()[0]
对于
false
myFunction()[1]
对于
“其他字符串”
一个干净的方法可能是使用异常机制。如果为false,则抛出包含所需消息的异常。

一个干净的方法可能是使用异常机制。当它为false时,您会抛出一个包含所需消息的异常。

我会让它只是

if (!check_nickname($item)) $message = "Martian names not accepted!";
我会让它只是

if (!check_nickname($item)) $message = "Martian names not accepted!";

返回一个空字符串“if true”?返回一个空字符串“if true”?异常机制用于定期执行特定函数不是一个好主意的情况。情况并非如此,OP只是想添加更多信息以返回数据。异常机制用于定期执行特定函数不是一个好主意的情况。事实并非如此,OP只是想添加更多信息以返回数据。