Make WordPress Core

Ticket #31316: 31316.2.diff

File 31316.2.diff, 2.6 KB (added by adamsilverstein, 10 years ago)
  • src/wp-includes/functions.php

     
    31813181                 * This is simple. Could at some point wrap array_column()
    31823182                 * if we knew we had an array of arrays.
    31833183                 */
    3184                 foreach ( $list as $key => $value ) {
     3184                $return_array = array();
     3185                foreach ( $list as $value ) {
    31853186                        if ( is_object( $value ) ) {
    3186                                 $list[ $key ] = $value->$field;
     3187                                $return_array[] = $value->$field;
    31873188                        } else {
    3188                                 $list[ $key ] = $value[ $field ];
     3189                                $return_array[] = $value[ $field ];
    31893190                        }
    31903191                }
    3191                 return $list;
     3192                return $return_array;
    31923193        }
    31933194
    31943195        /*
  • tests/phpunit/tests/functions/listFilter.php

     
    110110                $this->assertEquals( array( 'f' => 'foo', 'b' => 'bar', 'z' => 'baz' ), $list );
    111111        }
    112112
     113        /**
     114         * @ticket 31316
     115         */
     116        function test_wp_list_pluck_non_indexed_keys() {
     117
     118                /**
     119                 * A non-sequential array of objects, sometimes returned from get_the_terms.
     120                 */
     121                $test_indexed_array = array(
     122                                3 => array(
     123                                        'term_id' => 3,
     124                                        'name'    => 'Test',
     125                                        'slug'    => 'test',
     126                                ),
     127                                5 => array(
     128                                        'term_id' => 5,
     129                                        'name'    => 'Foo',
     130                                        'slug'    => 'foo',
     131                                ),
     132                                13 => array(
     133                                        'term_id' => 13,
     134                                        'name'    => 'Bar',
     135                                        'slug'    => 'bar',
     136                                ),
     137                        );
     138
     139                /**
     140                 * Test a indexed array for good measure.
     141                 */
     142                $test_non_indexed_array = array(
     143                                array(
     144                                        'term_id' => 3,
     145                                        'name'    => 'Test',
     146                                        'slug'    => 'test',
     147                                ),
     148                                array(
     149                                        'term_id' => 5,
     150                                        'name'    => 'Foo',
     151                                        'slug'    => 'foo',
     152                                ),
     153                                array(
     154                                        'term_id' => 13,
     155                                        'name'    => 'Bar',
     156                                        'slug'    => 'bar',
     157                                ),
     158                        );
     159
     160                /**
     161                 * wp_list_pluck should return the array of found values.
     162                 */
     163                $expected = array( 'test', 'foo', 'bar' );
     164
     165                /**
     166                 * This works fine with the non indexed array.
     167                 */
     168                $plucked = wp_list_pluck( $test_non_indexed_array, 'slug' );
     169                $this->assertEquals( $expected, $plucked );
     170
     171                /**
     172                 * This fails with the indexed array.
     173                 */
     174                $plucked = wp_list_pluck( $test_indexed_array, 'slug' );
     175                $this->assertEquals( $expected, $plucked );
     176        }
     177
    113178        function test_filter_object_list_nested_array_and() {
    114179                $list = wp_filter_object_list( $this->object_list, array( 'field4' => array( 'blue' ) ), 'AND' );
    115180                $this->assertEquals( 1, count( $list ) );