代码之家  ›  专栏  ›  技术社区  ›  Derple

在PHP三元情况下设置变量值

  •  0
  • Derple  · 技术社区  · 7 年前

    我试过几次,这里有两次尝试,但都失败了 $errors_log

    $errors_v=0;
    if (validate_username() == false ? null : $errors_v++ && $errors_log='username invalid');
    
    if ($errors_v != 0) {
        echo $errors_log;
    }
    
    function validate_username() {
        return true;
    }
    
    $errors_v=0;
    $errors_log[];
    if (validate_username() == false ? null : $errors_v++ && $errors_log[]='username invalid');
    
    if ($errors_v != 0) {
        var_dump($errors_log);
    }
    
    function validate_username() {
        return true;
    }
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   skolind    7 年前

    我会像下面这样做我的三元组,然后检查一下 $errors_log 不是空的,如果不是,请打印错误。

    $errors_log[] = validate_username() === false ? null : 'username invalid';
    
    if (!empty($errors_log)) {
        foreach($errors_log as $error) {
            echo $error;
        }
    }
    
    function validate_username() {
        return true;
    }
    

    $errors\u日志

    if (!validate_username()) {
        $errors_log[] = 'username invalid';
        $errors_v++;
    }
    
        2
  •  1
  •   mickmackusa Tom Green    7 年前

    您的模糊函数名及其返回值令人困惑/不直观。我建议重命名函数或反转它返回的布尔值。

    始终努力使用 DRY and DAMP 编码实践。

    代码的后半部分中的方法看起来比前半部分更好。
    如果要生成一个错误数组,不要费心增加计数器,只要在需要时对数组进行计数即可。

    代码:( Demo

    function bad_username(){  // new meaningful function name
        return true;
    }
    
    $errors_log=[];  // declare the variable as an array
    if(bad_username()){
        $errors_log[]='username invalid';  // push the value
    }
    
    if(sizeof($errors_log)){  // count elements in array, if 1 or more display them
        var_export($errors_log);
    }else{
        echo "No Error";
    }
    

    输出:

    array (
      0 => 'username invalid',
    )
    
        3
  •  0
  •   DrRoach    7 年前

    $errors_log empty 如果是增量 $errors_v 内部 if 声明如下:

    if (validate_username() == false ? null : $errors_log='username invalid');
    
    if (!empty($errors_log)) {
       $errors_v++;
       echo $errors_log;
    }
    
    function validate_username() {
        return true;
    }