【发布时间】: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,但其余的应该被过滤掉。