PHP: Switch() If{} 其他控制结构

PHP: Switch() If{} other control structures

如何在不使用 Switch 或 If 的情况下执行逻辑?

例如check_id_switch($id)

function check_id_switch($id){
    switch($id){
        case '1': 
        $HW = 'Hello, World!';
        break;
        default:
        $HW = 'Goodbye, World!';
        break;
     } 
  return $HW;
 }

或实例check_id_if($id)

function check_id_if($id){
    if($id == 1){
     $HW = 'Hello, World!';
    }
   else{ 
   $HW = 'Goodbye, World!';
 }
return $HW;
}

这两个函数 check_id_switch($id) 和 check_id_if($id) 都会检查其引用的 ID。

如何在不使用 php 中的 if/switch 语句的情况下创建与上述相同的逻辑?我也想避免 forloops。

关于 switch/if 的性能有很多争论,但是如果有另一个控制结构,它是否低于或超过上述控制结构?

添加登录脚本作为 if 语句的示例。我删除了登录脚本的 backbone 。如果 true:false,则不需要查看已完成的操作。我只是觉得下面是笨拙和不干净的。

if(!empty($_POST))
{
    $errors = array();
    $username = trim($_POST["username"]);
    $password = trim($_POST["password"]);
    $remember_choice = trim($_POST["remember_me"]);

    if($username == "")
    {
        $errors[] = ""; 
    }
    if($password == "")
    {

        $errors[] = "";
    }

    if(count($errors) == 0)
    {
        if(!usernameExists($username))
        {
            $errors[] = "";
        }
        else
        {
            $userdetails = fetchUserDetails($username);

            if($userdetails["active"]==0)
            {
                $errors[] = "";
            }
            else
            {
                $entered_pass = generateHash($password,$userdetails["password"]);

                if($entered_pass != $userdetails["password"])
                {
                    $errors[] = "";
                }
                else
                {

                    // LOG USER IN
                }
            }
        }
    }
}

您可以使用 ternary 运算符与

相同
function check_id_switch($id){
    return $HW = ($id == 1) ? 'Hello, World!' : 'Goodbye, World!';
}

或者您可以简单地使用 他评论为

的答案
function check_id_switch($id = '2'){
    $arr = [1 => "Hello, World!", 2 => "Goodbye, World!"];
    return $arr[$id];
}