Quiero hacer algo aparentemente muy simple, pero no puedo encontrar nada al respecto: simplemente extraiga un subconjunto de una matriz similar a array_splice, pero usando claves para recuperar los valores:Extrayendo un subconjunto de valores de una matriz asociativa (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');
Si todo lo demás falla, no es una función incorporada para filtrar una matriz asociativa con las teclas? Por ejemplo:
$ filteredArray = 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'];
supongo que la razón por la que quiero hacer el primero, es que no me gusta repetir acceso a una matriz asociativa todo mi código, parecería mejor optimizado para copiar los valores que se utilizan mucho (en un bucle, por ejemplo), en una variable local, además de que es mucho más fácil escribir $ name que $ somearray ['name'].
EDIT: Gracias, supongo que para su uso con la lista, la solución sería
list($x, $y, $z) = array_values(array_intersect_key($array, array_flip($wantedKeys)));
Intesresting uso de array_flip!