【问题标题】:php, mysql, arrays - if( x == 0 ) { }php, mysql, 数组 - if( x == 0 ) { }
【发布时间】:2011-01-09 14:44:13
【问题描述】:

我有以下代码

而($row = $usafisRSP->fetch_assoc()) { $hidden_​​keys = array('Applicantid', 'unique_num', 'regs_time' ....); $hidden_​​fields = array_intersect_key($row, array_fill_keys($hidden_​​keys, NULL)); $hidden_​​values = 数组(); foreach ($hidden_​​fields as $key => $value) { // 使用字段数组中的值填充值数组 $hidden_​​values[$value] = "$key = ".base64_decode($value)."
"; if(base64_decode($value)== 0) { $hidden_​​values[$value] = ""; } 回声 $hidden_​​values[$value];

问题是关于“if($hidden_​​values[$value] == 0)”...基本上我不想显示/回显 $hidden_​​values[$value] 如果 $value 的值为 0。有时$value 是 0 或一些像 (23 avenue) 这样的词。

【问题讨论】:

  • 到底是什么问题?你不知道如何在回显之前检查数组的内容是否为 0 值?
  • 您当前的代码遇到了什么问题?此外,您似乎缺少几个右括号。

标签: php mysql arrays associative-array


【解决方案1】:

我认为你遇到了三个问题 PHP type comparisons and equalities

  1. 任何不以数字开头的字符串总是大致等于 0。所以基本上,if(base64_decode($value)== 0) 可能总是解析为 true,即使解码后的 $value"Adam"
  2. base64_decode 的返回值是一个字符串,所以如果结果是 0,它会是 string 0,而不是 integer 0。这意味着 if(base64_decode($value) === 0) 不会即使解码 $value"0" 也可以工作。另一个问题是 base64_decode 可能会在错误时返回 false ,再次失败了这个严格的相等检查。
  3. 非空字符串("0" 除外)总是大致等于 true。因此,这是您真正需要的唯一比较。

我认为这就是你想要的,替换最后 5 行...

if(base64_decode($value)) echo $hidden_values[$value];
else $hidden_values[$value] = "";

} // closing your for loop

【讨论】:

    【解决方案2】:

    这就是你要找的吗?

    foreach( $hidden_values as $value ) {
        if( $value !== 0 ) {
            echo $value;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 2020-11-04
      • 1970-01-01
      • 2015-03-04
      • 2020-12-06
      • 2012-03-11
      • 1970-01-01
      • 2011-05-19
      • 2011-03-14
      相关资源
      最近更新 更多