模拟wordpress函数parse_args实现

wordpress函数wp_parse_args主要是用来合并传入参数和数组默认值。例如默认值为

$defaults = array(
    'current_page' => 0,
    'total_count' => 0,
    'before' => '',
    'after' => '',
    'page_url' => ''
);

当传入外部数组时

$args = array(
    'current_page' => $page,
    'total_count' => $total,
    'page_url' => $page_url
)

此时,合并后的数组应该为

array(
    'current_page' => $page,
    'total_count' => $total,
    'before' => '',
    'after' => '',
    'page_url' => $page_url
);

这有点类似于es6中的assign,或者是jQuery中的$.extend()。可以用如下的方式来实现上述功能。

function parse_args($args, $defaults = '') {
    if (is_object($args))
        $r = get_object_vars($args);
    elseif (is_array($args))
        $r =& $args;
    else
        $this->parse_str($args, $r);
    if (is_array($defaults))
        return array_merge($defaults, $r);
    return $r;
}

function parse_str($string, &$array) {
    parse_str($string, $array);
}

当然,传入查询字符串时,其也会将其解析为数组

total_count=1000&current_page=5

数组

array( 'total_count' => 1000, 'current_page' => 5 )
如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注