2017-05-05 3 views
0

Ich habe eine assoziative ArrayWie bestimmte Schlüssel in Array in PHP beibehalten?

$preans[$id]... 

die mit $id eine Menge von Daten, verknüpft ist.

Auch habe ich ein anderes Array, das

$affected_feature_ids[$id] = TRUE; 

Jetzt habe ich nur die Indizes in $preans beibehalten möchten, die in $affected_feature_ids existieren.

Wie geht das?

Antwort

3

Schnell und unelegant Arbeitslösung:

$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 

Eine elegantere Lösung könnte sein:

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

Der Unterschied Mathei Mihai Antwort ist, dass es $affected_feature_ids Elemente zu ignorieren, wo $id falsch ist oder null . In Ihrem Fall wird es nur $affected_feature_ids[$id] betrachten, wenn es true ist

Jetzt können Sie nach eleganteren Lösungen suchen!

5

Sie können einfach array_intersect_key verwenden:

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

array_intersect_key() ein Array gibt alle Einträge von array1 enthält, die Schlüssel haben, die in allen anderen Argumenten vorliegen.

+0

nicht viel eleganter als das – DevDonkey

Verwandte Themen