为了账号安全,请及时绑定邮箱和手机立即绑定

根据值添加或删除 PHP 字符串

根据值添加或删除 PHP 字符串

PHP
缥缈止盈 2023-10-21 16:21:55
我想从以下代码中添加或删除 php 字符串/数组:$params = array_merge([$pstatus, $_POST["minimum_price"], $_POST["maximum_price"]],$branddata);如果$branddata字符串为NULL时仍然存在,SQL将显示错误。因此,如果$branddata为 NULL/空,我想$branddata从 中删除$params。如果$branddata有价值$branddata就应该存在 $params,否则就不应该存在。这是用于 PDO 准备语句的函数。它不适用于空IN()值。我只能做以下事情!$base_sql = "SELECT %s FROM filter WHERE product_status = ?";$query = sprintf($base_sql, "*")." AND price BETWEEN ? AND ?";if(!empty($branddata)){    $query .= "AND brand IN($brand) ";  }     我如何添加或$branddata删除$params?
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

您可以使用它array_filter从数组中删除 null 或空值。



$params = [1, '', null];

print_r($params);


/*

Array

(

[0] => 1

[1] =>

[2] =>

)

*/


$params = array_filter($params);

print_r($params);


/*

Array

(

    [0] => 1

)

*/

不幸的是,它会取出所有空参数,包括零和空字符串。如果您只想删除 null 值,则可以向该函数添加回调以仅检查 null 。


$params = array_filter($params, function ($v){return $v !== null;});

编辑


除了你说它可以为空/空之外,在完全不知道里面是什么的情况$branddata下,我必须进行一些猜测。


首先,如果$branddata实际上为空,array_merge会吓坏了,我会用一个简单的空合并运算符来修复这个问题$branddata ?? []。


这是一个做了更多事情的示例:


$branddata = ['', null];

$params = array_filter(array_merge(['alpha', 'beta'], $branddata ?? []));

这会输出一个数组:


Array

(

    [0] => alpha

    [1] => beta

)

编辑


最适合您的字面版本是:


$params = array_filter(array_merge([$pstatus, $_POST["minimum_price"], $_POST["maximum_price"]], $branddata ?? []));



查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信