Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确嵌套三元运算符?_Php_Echo_Ternary Operator - Fatal编程技术网

Php 如何正确嵌套三元运算符?

Php 如何正确嵌套三元运算符?,php,echo,ternary-operator,Php,Echo,Ternary Operator,我知道嵌套三元运算符是可能的,我想在这种情况下使用它们来节省时间(至少在将来) 我有一个变量,它将保存四个值中的一个: “管理员” “编辑” “wadmin” “wuser” 其中每一个用于分别基于用户类型16、12、8和8来确定必要的密码长度 我希望PHP根据变量的内容来回显这些数字,在本例中命名为$match 到目前为止,我得到的是: echo $match == "admin" ? "16" : $match == "edit" ? "12" : "8"; 但这总是与12相呼应。我如

我知道嵌套三元运算符是可能的,我想在这种情况下使用它们来节省时间(至少在将来)

我有一个变量,它将保存四个值中的一个:

  • “管理员”
  • “编辑”
  • “wadmin”
  • “wuser”
其中每一个用于分别基于用户类型16、12、8和8来确定必要的密码长度

我希望PHP根据变量的内容来回显这些数字,在本例中命名为
$match

到目前为止,我得到的是:

echo $match == "admin" ? "16" : $match == "edit" ? "12" : "8";

但这总是与12相呼应。我如何重写它以正确地回显“16”、“12”或“8”?

这样就可以了

false
条件括在括号/括号中

echo ($match == 'admin') ? '16' : (($match == 'edit') ? '12' : '8');


这样就行了

false
条件括在括号/括号中

echo ($match == 'admin') ? '16' : (($match == 'edit') ? '12' : '8');


使用嵌套,希望对您有所帮助。你可以永远延伸;)


使用嵌套,希望对您有所帮助。你可以永远延伸;)

使用论文:
echo$match==“管理员”?“16”:($match==“编辑”?“12”:“8”)

使用偏执:
echo$match==“管理员”?“16”:($match==“编辑”?“12”:“8”)

虽然它没有直接回答问题,但您可以完全避免嵌套三元:

<?php
$minlen = array(
    "admin" => 16,
    "edit" => 12,
    "wadmin" => 8,
    "wuser" => 8,
);

// Example usage
$match = "admin";
echo $minlen[$match];
?>

虽然它没有直接回答问题,但您可以完全避免嵌套三元:

<?php
$minlen = array(
    "admin" => 16,
    "edit" => 12,
    "wadmin" => 8,
    "wuser" => 8,
);

// Example usage
$match = "admin";
echo $minlen[$match];
?>


PHP的三元运算符已损坏。@elclanrs您是说这应该可以工作,即使它不工作?可能重复“可能嵌套三元运算符”-可能,但不是一个好主意,它只是使代码难以阅读-“我想在这种情况下使用它们来节省时间”-三元运算符比简单的if语句需要更多的时间来计划(因此不节省开发时间),并且不会比if语句运行得更快(因此不保存任何运行时)。我想是的,但它们仍然是我以前从未理解过的编程的一部分,现在我了解了!)PHP的三元运算符已损坏。@elclanrs所以你是说这应该可以工作,即使它不工作?可能重复“可能嵌套三元运算符”-可能,但不是一个好主意,它只是使代码难以读取-“我想在这种情况下使用它们来节省时间”-三元运算符比简单的if语句需要更多的时间来计划(因此不节省开发时间),并且不会比if语句运行得更快(因此不保存任何运行时)。我想是的,但它们仍然是我以前从未理解过的编程的一部分,现在我了解了!)耶!这也有道理。该死的括号!这是PHP特有的,因为与大多数其他语言不同,PHP从左到右读取三元运算符。在我看来,这样做也不值得,我会使用
开关
elseif
。耶!这也有道理。该死的括号!这是PHP特有的,因为与大多数其他语言不同,PHP从左到右读取三元运算符。在我看来,这样做也不值得,我会使用
开关
elseif
。这比使用三元运算符的原始方法要好得多。它避免了处理复杂的代码,并且允许非常容易地更改或添加值。这比使用三元运算符的原始方法要好得多。它避免了处理复杂的代码,并允许非常容易地更改或添加值。