【问题标题】:how to get empty fields from db如何从数据库中获取空字段
【发布时间】:2017-03-18 15:46:53
【问题描述】:

我想从 db 中提取空字段,但作为回报,此代码不起作用

function check_empty_fields($user_last_ad_id){
    $query = $this->db->query(
      "SELECT * FROM ad
      WHERE ad_user_id = ?
      ORDER BY id
      DESC LIMIT 1",
      $user_last_ad_id)->result_array()[0];

      foreach ($query as $key => $value) {
        if (empty($value) or strlen($value) == 0 or $value == 0) {
          $empty_field[] = $key;
        }
      }

      return $empty_field;
  }

所有字段这是我所有的数据库表字段,我想过滤空字段和“0”字段

Array
(
    [id] => 283
    [ad_user_id] => 3
    [ad_name] => Asus n555
    [ad_category] => 1
    [ad_title] => 3
    [ad_message_id] => 0
    [ad_second_message_id] => 0
    [ad_price] => 0
    [ad_photo_file_id] => 0
    [ad_explanation] => 
    [ad_link] => 
    [ad_date] => 0000-00-00
    [ad_cast_premition] => 0
)

输出:这是函数返回的输出

Array
(
    [0] => ad_name
    [1] => ad_message_id
    [2] => ad_second_message_id
    [3] => ad_price
    [4] => ad_explanation
    [5] => ad_link
    [6] => ad_date
    [7] => ad_cast_premition
)

如您所见,它没有过滤空字段或“0”字段, 我该怎么做呢

有什么想法吗?

谢谢

【问题讨论】:

  • 您的 0 可能是字符串数据类型而不是数字,请将其添加到您的 if 语句中:or $value == '0'
  • @ThomasG PHP 的类型很松散,所以'0' == 0 是真的。
  • 你可以使用类似array_diff($query , array_filter($query)) 的东西来代替循环。我没有尝试过,我有点不确定它是否会根据您的请求正确过滤您的ad_date,但其余的应该被过滤掉。

标签: php mysql arrays


【解决方案1】:
if (empty($value) or strlen($value) == 0 or $value == 0) {

应该是

if (empty($value) || strlen($value) == 0 || value == 0) {

或者更确切地说,这也可以工作

if (!$value) {

【讨论】:

  • 根据php manual||or 之间没有任何区别
  • 他们有不同的优先级。 stackoverflow.com/questions/17710924/….
  • @MasoudTavakkoli 为什么要在 if(!$value) 有效的情况下定义具体案例。它将处理 0、'0'、null、false、''、[] 等。
【解决方案2】:
if (empty($value) or strlen($value) == 0 or $value == 0)

应该是

if (empty($value) or $value === 0)
//  empty string / strictly equals to ZERO

带有3个等号,表示“严格”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 2017-02-23
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多