2016-07-11 16 views
-1

OK, so habe ich ein Array, das wie folgt aussieht:Abrufen Subarray basierend auf dem Teilunter Wert

$countries = array(); 
$countries['CA'] = array('name'=>'Canada','currency'=>array('code'=>'CAD','format'=>'$#')); 
$countries['US'] = array('name'=>'USA','currency'=>array('code'=>'USD','format'=>'$#')); 
$countries['AR'] = array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#')); 
$countries['AW'] = array('name'=>'Aruba','currency'=>array('code'=>'AWG','format'=>'ƒ#')); 

Wenn ich den Wert „ARS“, wie würde ich das gesamte „AW“ Subarray abrufen ?

bearbeiten: sorry, ich brauche das "Format" daneben.

+1

Loop durch das Array, bis Sie es finden – rjdown

Antwort

1

können Sie array_filter verwenden, um nur Werte aus dem Array zurück, die mit dem Code, den Sie suchen:

$code = 'ARS'; 
$results = array_filter($countries, function($country) use ($code) { 
    return $country['currency']['code'] == $code; 
}); 

$results wird ein Array mit null oder mehr Elemente, je nachdem, wie viele Übereinstimmungen gefunden wurden . Für das Beispiel Array in Frage, wäre dies:

array(array('name'=>'Argentina','currency'=>array('code'=>'ARS','format'=>'$#'))); 

können Sie Schleife über die Ergebnisse oder die erste mit $country = reset($results); erhalten, die false zurück, wenn keine Länder Code angepasst.

Wenn Sie nur maximal ein Spiel erwarten, oder wollen nur das erste Spiel bekommen, dann können Sie eine Schleife über das Array und break, sobald Sie finden, was Sie suchen:

$found_country = null; 
foreach ($countries as $country) { 
    if ($country['currency']['code'] == $code) { 
     $found_country = $country; 
     break;   
    } 
} 
+0

Dank der zweite Foreach-Code hat den Trick :) Vielen Dank! – thatgerhard

Verwandte Themen