A useful way to create new WordPress arrays
Let say you have a set of data stored in an array and you want to isolate or create a new array with certain data.
There is a powerful function called wp_list_pluck() and wp_list_filter() that can be used for such tasks with any sort of datasets.
For example consider the following array:
$vehicles = array(
array(
'id' => 1,
'type' => 'car',
'color' => 'red',
),
array(
'id' => 2,
'type' => 'car',
'color' => 'blue',
),
array(
'id' => 3,
'type' => 'car',
'color' => 'red',
),
array(
'id' => 4,
'type' => 'truck',
'color' => 'green',
),
array(
'id' => 5,
'type' => 'bike',
'color' => 'blue',
),
);
First of all we can use wp_list_pluck() with 2 parameters, the array to pluck and the key to be plucked. So to create another array that contains just the key for the “type” we would do the following:
$new_array = wp_list_pluck($vehicles, 'type');
// would produce the following
// array('car', 'car', 'car', 'truck', 'bike');
The same could be done to collate the id’s for later loops:
$new_array = wp_list_pluck($vehicles, 'id');
// would produce the following
// array('1', '2', '3', '4', '5');
wp_list_filter() is another useful and powerful function that can be used to further refine your new array, say for instance you’d like to create a new array with just cars that are red, this is how you can go about it:
$filter_to_use = array('type' => 'car', 'color' => 'red');
$red_cars = wp_list_filter($vehicles, $filter_to_use);
// this would end up creating an array like so
// array(
// array(
// 'id' => 1,
// 'type' => 'car',
// 'color' => 'red',
// ),
// array(
// 'id' => 3,
// 'type' => 'car',
// 'color' => 'red',
// )
//);
Both of these functions are very useful when is comes to creating new arrays.