The
wp_parse_args() function is a frequently used function in the core of WordPress. It has many uses, but it is mainly used to bind a default value to an array parameter (args).
Because the wp_parse_args() function must return an array, it will automatically convert the incoming query string and object into an array, giving users more convenient conditions and increasing compatibility.
The common query_posts(), wp_list_comments() and get_terms() functions all use the wp_parse_args() function to help them add default values to array parameters.
Usage
wp_parse_args( $args, $defaults );
Parameters
$args
(array | string) (required) Query string, object or array parameters, used to bind default values.
Default: None
Query string:
type=post&posts_per_page=5&cat=1
Array:
array( 'type' => 'post', 'posts_per_page' => 5, 'cat' => '1' )
$defaults
(Array) (Optional) Default parameters for the array parameter.
Default value: empty string
Example
function explain_parse_args( $args = array() ){ //$args 的默认值 $defaults = array( 'before' => '<div>', 'after' => '</div>', 'echo' => true, 'text' => 'wp_parse_args() 函数演示' ); //绑定默认值 $r = wp_parse_args( $args, $defaults ); $output = $r['before'] . $r['text'] . $r['after']; if( !$r['echo'] ) return $output; echo $output; } //没有参数 explain_parse_args();//打印:<div>wp_parse_args() 函数演示</div> //字符串参数 $output = explain_parse_args( 'text=字符串参数&before=<div>&echo=0' ); echo $output;//打印:<div>字符串参数</div> //数组参数 explain_parse_args( array( 'text' => '数组参数', 'before' => '<div>' ) );//打印:<div>数组参数</div> 还有另一种不使用第二个 $defaults 参数的用法,就是帮你把一个查询字符串、对象或者数组的变量直接转换成通用的数组,避免判断类型。 //字符串 $array = wp_parse_args( 'text=测试另一种用法&type=字符串' ); var_dump( $array ); /* array(2) { ["text"]=> string(21) "测试另一种用法" ["type"]=> string(9) "字符串" } */ //对象(object) class args_obj{ public $text = '测试另一种用法'; public $type = '对象(object)'; function func(){ //转换成数组的时候对象里边的函数会被忽略 } } $obj = new args_obj; var_dump( $obj ); /* object(args_obj)#2175 (2) { ["text"]=> string(21) "测试另一种用法" ["type"]=> string(18) "对象(object)" } */
wp_parse_args function source code details The source code of this function:
/** * Merge user defined arguments into defaults array. * * This function is used throughout WordPress to allow for both string or array * to be merged into another array. * * @since 2.2.0 * *第一个参数可以是 字符串、数组或对象(obj) * @param string|array $args Value to merge with $defaults *第二个参数为默认的预设值数组,必须是数组 * @param array $defaults Array that serves as the defaults. *返回值将是一个数组 * @return array Merged user defined values with defaults. */ function wp_parse_args( $args, $defaults = '' ) { if ( is_object( $args ) ) //将接收的对象(obj)转换为数组 $r = get_object_vars( $args ); elseif ( is_array( $args ) ) //如果是数组则不转换 $r =& $args; else //将接收的字符串转换为数组 wp_parse_str( $args, $r ); if ( is_array( $defaults ) ) return array_merge( $defaults, $r ); return $r; }
array_merge function is used to merge the cells of two or more arrays, and the values in one array are appended to the previous array. Returns the resulting array.
The above has introduced a detailed explanation of the wp_parse_args function used to synthesize arrays in WordPress, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.