【问题标题】:PHP if statement: Zero vs 'empty'PHP if 语句:零与“空”
【发布时间】:2021-09-18 23:43:52
【问题描述】:

我正在使用高级自定义字段插件创建一个 WordPress 网站。我有一组网球成绩结果字段。在模板中,我这样显示这些字段:

<?php if(get_field('my_field')) : ?>
   <?php echo get_field('my_field'); ?>
<?php endif; ?>

问题是有些分数为零,所以它们没有显示出来。我明白这是因为0基本上等于null,所以这个说法是错误的。

我找到并尝试过的一个解决方案是:

<?php if(get_field('my_field') !== false) : ?>
   <?php echo get_field('my_field'); ?>
<?php endif; ?>

但是,这意味着现在也会显示空字段,这是不可取的,因为有很多字段在为空时会被隐藏。

所以,我的问题是,有没有办法表达一个允许零的 if 语句,同时在字段为空时仍然返回 false?请注意,有些分数不是纯粹的数字,其值为“6(1)”。

【问题讨论】:

  • 这不是真的:0 basically equals null, 0 是 int。或字符串 0。数字类型。对其执行 var_dump 以查看其中的内容。
  • 列出所有可能获得的值及其类型。表达哪些价值观应该是真实的,哪些是虚假的。查看 PHP 比较规则是否符合您的要求。
  • 如果只想排除空字符串,那么在if里面添加对应的测试。

标签: php wordpress if-statement advanced-custom-fields zero


【解决方案1】:

为了检查空字符串,您必须在 if 条件中明确检查它们。

<?php if(get_field('my_field') !== '') : ?>
   <?php echo get_field('my_field'); ?>
<?php endif; ?>

原因是0null空字符串空数组都计算为(但不完全是)在布尔检查的情况下为假。

【讨论】:

  • 非常感谢。这很适合我的目的。
  • 很高兴,很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
相关资源
最近更新 更多