【问题标题】:Turn 1/0 to valid/invalid将 1/0 转为有效/无效
【发布时间】:2014-07-14 22:57:57
【问题描述】:

如何在 PHP 中将 $validation 输出从 1/0 转换为单词“valid/invalid”? 在这种情况下我需要 json_encode($validation) 吗?

    $json = json_decode($content, true);

    if ($json['error'] == NULL ) {
        $country = $json['result']['countryCode'];
        $vatNumber = $json['result']['vatNumber'];
        $validation = $json['result']['valid'];               

          echo "
          <dt>Valid:</dt>
          <dd>$validation</dd>
          <dt>VAT-Number:</dt>
          <dd>$country$vatNumber</dd>

        } else {
    echo "error";
    }

谢谢!

【问题讨论】:

  • 使用 if-else 语句或三元运算符
  • @sectus 在 cmets 中为 @agro 回答了一个点...我更新了我的回答以反映(二级)验证 $validation === 1 以避免不希望的有效回报。

标签: php


【解决方案1】:

这个怎么样:

...
<dd>" . ($validation ? 'valid' : 'invalid') . "</dd>
...

或使用辅助检查

...
<dd>" . ($validation == 1 ? 'valid' : 'invalid') . "</dd>
...

【讨论】:

  • 最好是简短而甜蜜,如this answer所示,这将得到与我建议的相同的结果。
  • 优先级怎么样?
  • @sectus notice example 4 as mentioned is Non-obvious Ternary Behavior 而user3675536 显然是 PHP 初学者...
  • @CrandellWS ,重读答案。尝试重现答案的代码。然后考虑运算符优先级(串联和三元)。
  • @sectus 我不明白,因为$validation ? 'valid' : 'invalid'(($validation ? true : false) ? 'valid' : 'invalid' 相同,只有在不是1||0 true || false 值时才有问题...
【解决方案2】:

简单为 1 == true 和 0 == false

if($validation === 1){
    $validation = 'valid';
} else {
    $validation = 'invalid';
}

阅读 boolean 上的 php 文档

【讨论】:

  • 感谢您的鼓励。帮了我很多。我将阅读有关布尔值的信息。
【解决方案3】:

你可以使用数组:-

$validOrNot = ['invalid', 'valid'];

//some other code 'n stuff
$validation = $validOrNot[$json['result']['valid']];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 2013-12-08
    • 1970-01-01
    相关资源
    最近更新 更多