From 978a5984b4555d85760e2d4e1ddacbd80f735460 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 25 Aug 2011 19:50:29 +0000 Subject: [PATCH] Properly handle nested arrays in wp_list_filter(). Props scribu, SergeyBiryukov. fixes #16137 git-svn-id: http://svn.automattic.com/wordpress/trunk@18606 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/functions.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/wp-includes/functions.php b/wp-includes/functions.php index 44962e118..7d6340065 100644 --- a/wp-includes/functions.php +++ b/wp-includes/functions.php @@ -3198,7 +3198,14 @@ function wp_list_filter( $list, $args = array(), $operator = 'AND' ) { $filtered = array(); foreach ( $list as $key => $obj ) { - $matched = count( array_intersect_assoc( (array) $obj, $args ) ); + $to_match = (array) $obj; + + $matched = 0; + foreach ( $args as $m_key => $m_value ) { + if ( $m_value == $to_match[ $m_key ] ) + $matched++; + } + if ( ( 'AND' == $operator && $matched == $count ) || ( 'OR' == $operator && $matched <= $count ) || ( 'NOT' == $operator && 0 == $matched ) ) {