php 删除url参数里面为空的key值

图片描述

图片描述

为空的时候如何删除这个key值 不带?key=

阅读 4.3k
4 个回答
array_filter — 用回调函数过滤数组中的单元
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目
$param = [
    'key1' => '',
    'key2' => null,
    'key3' => 0,
    'key4' => false,
    'key5' => '66666',
];

$param_new =  array_filter($param);

print_r($param_new);

输出

Array
(
   [key5] => 66666
)
(1)
function delempkey($s1)
{
    if(strpos($s1,"?") !== false && ($sSubString = substr($s1,strpos($s1,"?") + 1)))
    {
        $sHeader = substr($s1,0,strpos($s1,"?") + 1);
        $aSubString = explode("&",$sSubString);
        $aTemp = [];

        foreach($aSubString as $value)
        {
            $aV = explode("=",$value);
            if($aV[1] == '')
            {
                continue;
            }
            $aTemp[] = $value;
        }
        if(!empty($aTemp))
        {
            $s1 =  $sHeader . implode("&",$aTemp);
        }
        else
        {
            $s1 = substr($sHeader,0,-1);
        }
    }
    else
        $s1 = substr($s1,0,-1);
    return $s1;
}
(2)
function delempkey1($s1)
{
    $aUrl = parse_url($s1);
    $bHasQuery = false;
    if(!empty($aUrl['query']))
    {
        parse_str($aUrl['query'],$aParr);
        $aParr = array_filter($aParr);
        if(!empty($aParr))
        {
            $bHasQuery = true;
            $aUrl['query'] = '?' . http_build_query($aParr);
        }
    }
    if(!$bHasQuery)
    {
        $aUrl['query'] = '';
    }

    return $aUrl['scheme'] . "://" . $aUrl['host'] . $aUrl['path'] . $aUrl['query'];
}

parse_url 获取url的组成部分,unset空的参数,最后http_build_query 生成url参数

如果你是想搜索的时候没填key值就不带那一段的话那这是js处理
通过js生成跳转链接, 并跳转

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题