- var_dump: documentation ( source)
- array_merge: documentation ( source)
<?php
function coolPluck($array, $allowed) {
$output = array();
foreach($allowed as $keyToFind) {
foreach($array as $k => $v) {
if($k === $keyToFind) {
$output[$keyToFind] = $v;
}
if(is_array($v)) {
$results = coolPluck($v, $allowed);
if (isset($results[$keyToFind])) {
if (!isset($output[$keyToFind])) {
$output[$keyToFind] = $results[$keyToFind];
}
else {
if(is_array($output[$keyToFind])) {
$output[$keyToFind] = array_merge(array($output[$keyToFind]), (array)$results[$keyToFind]);
}
else {
$output[$keyToFind] = array_merge((array)$output[$keytoFind], (array)$result[$keyToFind]);
}
}
}
}
}
}
return $output;
}
$testArray = array(
'test' => array(
'percy' => array(
'philip' => array('percy' => array(
'mitch' => array('percy' => 'cool', 'mitch' => 'anderson')
)
)
),
'mitch' => array(
'mitchell',
'anderson'
)
)
);
var_dump(coolPluck($testArray, array('percy', 'mitch')));