У меня есть массив, который выглядит так:
array(
0 => array(
'key1' => 'a',
'key2' => 'b',
'key3' => 'c'
),
1 => array(
'key1' => 'c',
'key2' => 'b',
'key3' => 'a'
),
...
)
Мне нужна функция для получения массива, содержащего только (переменное) количество ключей, то есть redu_array (array ('key1', 'key3')); должен вернуть:
array(
0 => array(
'key1' => 'a',
'key3' => 'c'
),
1 => array(
'key1' => 'c',
'key3' => 'a'
),
...
)
Какой самый простой способ сделать это? Если возможно, без каких-либо дополнительных вспомогательных функций, таких как array_filter или array_map, так как мои коллеги уже жалуются на то, что я использую слишком много функций.
Исходный массив всегда будет иметь заданные ключи, поэтому проверка наличия не требуется.
Бонусные баллы, если значения уникальны (ключи всегда будут связаны друг с другом, что означает, что если ключ1 имеет значение a, то другой ключ (ключи) всегда будет иметь значение b).
Мое текущее решение, которое работает, но довольно неуклюже (даже название ужасное, но не может найти лучшего):
function get_unique_values_from_array_by_keys(array $array, array $keys)
{
$result = array();
$found = array();
if (count($keys) > 0)
{
foreach ($array as $item)
{
if (in_array($item[$keys[0]], $found)) continue;
array_push($found, $item[$keys[0]]);
$result_item = array();
foreach ($keys as $key)
{
$result_item[$key] = $item[$key];
}
array_push($result, $result_item);
}
}
return $result;
}
Добавление
Версия PHP 5.1.6.