缩短在php-pdo中使用条件删除数组元素的代码


Shorten code for removing array element with conditional in php pdo

是否有缩短此代码的方法?它看起来很笨重。我尝试了几种使用三元运算符的简写方法,但都没有成功。这就是我的想法。任何想法都将不胜感激。

$query = $db->prepare($sql);
$array = array(':page_parent' => $parent_id, ':page_active' => $active);
if(is_null($active)):
    unset($array[':page_active']);
endif;
$query->execute($array);
$query = $db->prepare($sql);
$array = array(':page_parent' => $parent_id, ':page_active' => $active);
//array_filter will remove null and false array element 
$array = array_filter($array);
$query->execute($array);

为什么不能在将其添加到数组之前进行检查?

$query = $db->prepare($sql);
$array = array(':page_parent' => $parent_id);
if( ! is_null($active))
{
    $array[':page_active'] = $active;
}
$query->execute($array);

虽然它的行数相同,但它的效率更高,因为它只在有东西的情况下处理活动,而不是在里面什么都没有的情况下添加然后删除。