Changeset 15686 for trunk/wp-includes/functions.php
- Timestamp:
- 10/02/2010 06:48:51 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/functions.php
r15685 r15686 3020 3020 */ 3021 3021 function wp_filter_object_list( $list, $args = array(), $operator = 'and', $field = false ) { 3022 if ( !is_array($list) ) 3023 return array(); 3024 3025 if ( empty($args) ) 3026 $args = array(); 3027 3028 if ( empty($args) && !$field ) 3029 return $list; // nothing to do 3030 3031 $count = count($args); 3022 $list = wp_list_filter( $list, $args, $operator ); 3023 3024 if ( $field ) 3025 $list = wp_list_pluck( $list, $field ); 3026 3027 return $list; 3028 } 3029 3030 /** 3031 * Filters a list of objects, based on a set of key => value arguments 3032 * 3033 * @since 3.1.0 3034 * 3035 * @param array $list An array of objects to filter 3036 * @param array $args An array of key => value arguments to match against each object 3037 * @param string $operator The logical operation to perform. 'or' means only one element 3038 * from the array needs to match; 'and' means all elements must match. The default is 'and'. 3039 * @return array 3040 */ 3041 function wp_list_filter( $list, $args = array(), $operator = 'and' ) { 3042 if ( empty( $args ) ) 3043 return $list; 3044 3045 $count = count( $args ); 3032 3046 3033 3047 $filtered = array(); 3034 3048 3035 3049 foreach ( $list as $key => $obj ) { 3036 $matched = count( array_intersect_assoc( (array) ($obj), $args ) );3050 $matched = count( array_intersect_assoc( (array) $obj, $args ) ); 3037 3051 if ( ('and' == $operator && $matched == $count) || ('or' == $operator && $matched <= $count) ) { 3038 if ( $field ) 3039 $filtered[] = $obj->$field; 3040 else 3041 $filtered[$key] = $obj; 3052 $filtered[$key] = $obj; 3042 3053 } 3043 3054 } 3044 3055 3045 3056 return $filtered; 3057 } 3058 3059 /** 3060 * Pluck a certain field out of each object in a list 3061 * 3062 * @since 3.1.0 3063 * 3064 * @param array $list A list of objects or arrays 3065 * @param int|string $field A field from the object to place instead of the entire object 3066 * @return array 3067 */ 3068 function wp_list_pluck( $list, $field ) { 3069 foreach ( $list as $key => $value ) { 3070 $value = (array) $value; 3071 $list[ $key ] = $value[ $field ]; 3072 } 3073 3074 return $list; 3046 3075 } 3047 3076
Note: See TracChangeset
for help on using the changeset viewer.