Я хочу сделать что-то очень простое, но я ничего не могу найти об этом: просто извлеките подмножество массива, похожего на array_splice, но , используя ключи к получить значения:Извлечение подмножества значений из ассоциативного массива (php)
$data = array('personName' => 'John', 'personAge' => 99, 'personId' => 1,
/* many more data I don't need here ... */);
list($name, $age, $id) = array_splice_by_keys($data,
array('personName', 'personAge', 'personId');
Если все остальное терпит неудачу, не существует встроенная функция для фильтрации ассоциативного массива по ключам? Например:
$ filterArray = array__extract__keys__and__values ($ srcArray, $ arrayOfWantedKeys);
// create a new array with ONLY those key => values I need
$wanted_values = array_extract_keys_and_values($data,
array('personName', 'personAge', 'personId');
echo $wanted_values['personName'];
Я думаю, причина, почему я хочу сделать первый, что я не люблю повторять ассоциативного доступа к массиву во всем моем коде, казалось бы, лучше оптимизированы для копирования значения, которые используются (в цикле, например), в локальную переменную, плюс гораздо проще набрать $ name, чем $ somearray ['name'].
EDIT: Спасибо, я думаю, для использования со списком, решение будет
list($x, $y, $z) = array_values(array_intersect_key($array, array_flip($wantedKeys)));
Intesresting использование array_flip!