【问题标题】:php function return a Boolean and use it on conditionphp函数返回一个布尔值并在条件下使用它
【发布时间】:2014-04-26 19:32:00
【问题描述】:

我不确定我将如何正确解释这一点。

我想要一个函数来验证我认为正确的字符串。

但我希望函数返回一个布尔值。

在函数之外,我需要设置一个条件,如果函数返回 false 或 true,那么它会做某事。这是我的代码。

我不确定这是否正确。

<?php
$string1 = 'hi';
function validatestring($myString, $str2) {
    if(!empty($myString)) {
        if(preg_match('/^[a-zA-Z0-9]+$/', $str2)) {
            }
    }
    else {
        return false;
    }
}

if(validatestring == FALSE) {
    //put some codes here
}
else {
    //put some codes here
}
?>

编辑:现在如果函数内有多个条件怎么办?

<?php
$string1 = 'hi';
function validatestring($myString, $myString2) {
    if(!empty($myString)) {
        if(preg_match('/^[a-zA-Z0-9]+$/', $str2)) {
            return true;
        }
        else {
            retun false;
        }
    }
    else {
        return false;
    }
}

if(validatestring($myString, $myString2) === FALSE) {
    //put some codes here
}
else {
    //put some codes here
}
?>

【问题讨论】:

  • if(validatestring($myString)){ ?
  • 你没有将参数传递给函数......
  • 并使用=== 而不是==

标签: php function boolean conditional-statements


【解决方案1】:

函数需要括号和参数。你一个都没有。

这是正确的:

if(validatestring($myString) === false) {
    //put some codes here
}

一个更简单、更优雅的方法是这样的:

if(!validatestring($myString)) {
    //put some codes here
}

【讨论】:

  • 那么,我不需要先调用该函数吗?例如validatestring($myString);if(//the condition) {}
  • 函数将首先被评估,因为需要该值来检查 if。函数返回的值将在条件中使用。所以你不必先调用它,不,上面的方法是有效的,通用的,比先评估函数更专业,将其保存在变量中,然后在条件中使用变量。
  • 所以既然 if 需要它,那么函数将在不调用它的情况下进行评估,然后进行 if,对吗?
  • 您在 if 条件内调用函数。这就像你在外面打电话一样。甚至可以在 if 中分配变量,例如 if(($var = validatestring($myString)) === false) {}
  • 那是有效的。一个函数只能返回一次,之后它会中止并继续执行通常的代码。所以你可以把数百万的返回值放在一个函数中,它总是只返回一个值。
【解决方案2】:
<?php
$string1 = 'hi';
function validatestring($myString) {
    if(!empty($myString)) {
        return true;
    }
    else {
        return false;
    }
}

if(validatestring($string1) === FALSE) {
    //put some codes here
}
else {
    //put some codes here
}
?>

【讨论】:

    【解决方案3】:

    旁注,由于 empty() 已经返回 false ,您可以通过以下方式进行简化:

    function validateString($string){
      return !empty($string);
    }
    
    if(validateString($myString){
      // ok
    }
    else {
     // not ok
    }
    

    稍后进行检查和测试:

     $check = validateString($myString);
    
     if($check){ }
    

    不需要检查== false=== false,该函数已经返回一个布尔值,这将是多余的。

    【讨论】:

      【解决方案4】:

      在函数中存储 $string1 到 $myString myString=string1

      <?php
      $string1 = 'hi';
      function validatestring($myString) {
              myString=string1;
          if(!empty($myString)) {
              return true;
          }
          else {
              return false;
          }
      }
      
      if(validatestring() === FALSE) {
          //put some codes here
      }
      else {
          //put some codes here
      }
      ?>
      

      【讨论】:

      • 什么???除了语法错误之外,$string1 在函数范围内未定义!
      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2021-01-06
      相关资源
      最近更新 更多