array_merge() [function.arraymerge]: Argument #1 is not an array in ……错误的解决办法

用合并数组函数array_merge()时出错了。
array_merge() [function.array-merge]: Argument #1 is not an arrayin

我出错的是在这个函数。
function build_uri($app, $params, $append = '', $page = 0, $keywords = '', $size = 0)
{
    static $rewrite = NULL;

    if ($rewrite === NULL)
    {
        $rewrite = intval($GLOBALS['_CFG']['rewrite']);
    }

    $args = array('cid'   => 0,
                  'gid'   => 0,
                  'bid'   => 0,
                  'acid'  => 0,
                  'aid'   => 0,
                  'sid'   => 0,
                  'gbid'  => 0,
                  'auid'  => 0,
                  'sort'  => '',
                  'order' => '',
                );
    extract(array_merge($args, $params));

出错显示,参数不是数组。
猜测用$params可能传过来的参数可能是空值,所有返回的值就不是数组了,知道原因就很容易了,既然不是数组,那我就给你转成数组。
解决后的函数:
extract(array_merge((array)$args, (array)$params));

原文地址:https://www.cnblogs.com/MRPUNK/p/3849314.html