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

我想从以下代码中添加或删除 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?


缥缈止盈
浏览 78回答 1
1回答

噜噜哒

您可以使用它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 ?? []));
打开App,查看更多内容
随时随地看视频慕课网APP