【问题标题】:How to change the variable being assigned via condition?如何更改通过条件分配的变量?
【发布时间】:2011-09-10 08:11:30
【问题描述】:

我想根据条件更改分配的变量,我似乎可以让它工作。

$condition = false;

($condition !== false ? $array[1][$condition] : $array[1]) = 'Test';

在本例中,如果 $condition 不为假,我想将字符串“Test”分配给 $array[1][$condition]。否则,将其分配给 $array[1]

我可以像这样轻松地做到这一点:

if ($condition !== false) {
    $array[1][$condition] = 'Test'; }
else {
    $array[1] = 'Test'; }

但是由于代码的性质,这可能会变得非常混乱,这就是为什么我希望它是一个内联条件语句。

感谢您的帮助!

【问题讨论】:

  • 使用完整的 if 语句。更好,特别是因为三元运算符在 PHP 中有点损坏。
  • !== false 是不必要的... if ($condition) { 是您所需要的。由于您没有有条件地更新一个变量,? : 语法将无法正常工作。
  • 法斯科,谢谢。我知道 !== 是不必要的,但我一直使用它,因为它更快更容易阅读正在发生的事情。 ;)

标签: php variables conditional


【解决方案1】:
$condition = false;

$array[1][$condition] = ($condition !== false ? 'Test' : $array[1]);

【讨论】:

  • 赢家,鸡肉晚餐!
  • 这行不通。如果条件为假,则不会给出所需的答案。
【解决方案2】:
$condition !== false ? $array[1][$condition] = "Test" : $array[1] = "Test";

【讨论】:

  • 这不是 OP 想要的。
  • 其实这似乎是最好的方法,除非有更好的解决方案。如果我将“测试”分配给一个变量,我可以使用: $condition !== false ? $array[1][$condition] = $var : $array[1] = $var;
【解决方案3】:

The result of the ternary operator is not a reference,因此您不能将其用作作业的左侧。

您也许可以使用可变变量和引用,但这可能只会增加复杂性而不会提供任何实际好处。

类似这样的:

$a =& $array[1];
$b =& $array[1][$condition];

$var = ($condition !== false ? 'b' : 'a');
$$var = 'Test';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2020-01-12
    • 2021-03-16
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多