2017-05-05 3 views
0

J'ai un tableau associatifComment conserver des clés spécifiques dans un tableau en PHP?

$preans[$id]... 

qui a beaucoup de données, associées à $id.

J'ai aussi un autre tableau, qui a

$affected_feature_ids[$id] = TRUE; 

Maintenant, je veux conserver dans $preans uniquement les index qui existent dans $affected_feature_ids.

Comment faire?

Répondre

3

solution de travail rapide et inélégante:

$a = [] 
foreach($affected_feature_ids as $key => $value) { 
    if ($value) $a[$key] = $preans[$key]; 
} 
// Now $a has only the elements you wanted. 
print_r($a); // <-- displays what you are asking for 

Une solution plus élégante pourrait être:

$preans = array_intersect_key($preans, array_filter($affected_feature_ids)); 

La différence avec Mathei Mihai réponse est qu'il ignorera $affected_feature_ids éléments où $id est faux ou nul . Dans votre cas, il considérera seulement $affected_feature_ids[$id] quand il est true

Maintenant, vous pouvez rechercher des solutions plus élégantes!

5

Vous pouvez simplement utiliser array_intersect_key:

$preans = array_intersect_key($preans, $affected_feature_ids); 

array_intersect_key() retourne un tableau contenant toutes les entrées de array1 qui ont des clés qui sont présentes dans tous les arguments.

+0

ne soyez pas beaucoup plus élégant que ça – DevDonkey