2010-11-05 7 views
1

Existe-t-il une fonction php qui font ceci:tableau associatif du projet par les noms clés dans PHP

$source = array('id1'=>'name', 'id2'=>'name2', 'id3'=>'name3'); 

$keys = array('id1', 'id3'); 

$projection = project($source, $keys); 

Je veux:

$projection = array('name', 'name3'); 

J'ai cherché les fonctions de tableau standards pour une longue période et je pourrais ne trouve rien.

Répondre

0

Non en tant que tel. Vous pourriez se rapprocher de ce que vous essayez de faire en utilisant:

$projection = array_values(array_replace(array_flip($keys),$source)); 

Ou:

$projection = array_values(array_intersect_key(array_flip($keys),$source)); 

Cependant, cela ne fonctionnera pas si un élément donné apparaît deux fois dans le tableau clé.

Si vous avez accès à PHP 5.3, vous pouvez utiliser une fermeture:

$projection = array_map(
    function($key) use (&$source) { return $source[$key]; }, $keys 
); 
2

On dirait que je devrais regarder de plus - l'astuce consiste à utiliser cette fonction:

$projection = array_intersect_key($source, array_flip($keys)) 

Cependant, il est laid parce que vous devez faire une array_flip.

Questions connexes