Skip to content

Instantly share code, notes, and snippets.

@djheru
Last active August 29, 2015 13:56
Show Gist options
  • Save djheru/9235930 to your computer and use it in GitHub Desktop.
Save djheru/9235930 to your computer and use it in GitHub Desktop.
array_filter() nested arrays using an external value
s<?php
function pluck($nestedArray, $key, $value, $maintainKeys=true){
$func = 'return ($obj["' . $key . '"] == "' . $value . '") ? true : false;';
$callback = create_function('$obj', $func);
$filtered = array_filter($nestedArray, $callback);
return ($maintainKeys) ? $filtered : array_values($filtered);
}
$users = [
[
'fname' => 'Philip',
'lname'=>'Damra',
'email'=>'mail@mail.com'
],
[
'fname' => 'Joe',
'lname'=>'Davis',
'email'=>'email@mail.com'
],
[
'fname' => 'Heather',
'lname'=>'Damra',
'email'=>'hmail@mail.com'
]
];
print_r(pluck($users, 'lname', 'Damra'));
print_r(pluck($users, 'lname', 'Damra', false));
/*
note keys:
Array
(
[0] => Array
(
[fname] => Philip
[lname] => Damra
[email] => mail@mail.com
)
[2] => Array
(
[fname] => Heather
[lname] => Damra
[email] => hmail@mail.com
)
)
Array
(
[0] => Array
(
[fname] => Philip
[lname] => Damra
[email] => mail@mail.com
)
[1] => Array
(
[fname] => Heather
[lname] => Damra
[email] => hmail@mail.com
)
)
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment