2012-05-05 19 views
20

Ich fragte mich, was ist die beste Möglichkeit, Schlüssel in einem Array zu suchen und seinen Wert zurückgeben. Etwas wie array_search, aber für Schlüssel. Wäre eine Schleife der beste Weg?PHP-Suche Array-Schlüssel und erhalten Wert

Array:

Array([20120425] => 409 [20120426] => 610 [20120427] => 277 
     [20120428] => 114 [20120429] => 32 [20120430] => 304 
     [20120501] => 828 [20120502] => 803 [20120503] => 276 [20120504] => 162) 

Wert Ich suche: 20120504

Antwort

50

Der Schlüssel ist bereits die ... ehm ... Schlüssel

echo $array[20120504]; 

Wenn Sie sind sich nicht sicher, ob der Schlüssel existiert, testen Sie ihn

$key = 20120504; 
$result = isset($array[$key]) ? $array[$key] : null; 

Minor Zusatz:

$result = @$array[$key] ?: null; 

man argumentieren kann, dass @ schlecht ist, aber es ernst halten: Das ist besser lesbar und direkt, ist es nicht?

Update: Mit PHP7 meinem vorherigen Beispiel möglich ist, ohne den Fehler-Schalldämpfer

$result = $array[$key] ?? null; 
+0

wie ich dachte, viele verschiedene Antworten darauf. Das funktioniert großartig und ist am einfachsten. –

+4

'Der Schlüssel ist schon der ... ehm ... Schlüssel' - das ist wirklich hilfreich :) In der Hitze des Augenblicks kann man das Offensichtliche wirklich vergessen. Danke, dass du mir Zeit gespart hast! –

3
array_search('20120504', array_keys($your_array)); 
+0

Dies ist nur nützlich, wenn Sie den Index des Schlüssels wissen wollen ... – Matthew

+0

@Matthew: OP hat gesagt: "Wert, den ich suche: 20120504". Es ist also eine sichere Annahme, dass er weiß, wonach er sucht. –

-1

Hier ist ein Beispiel gerade aus PHP.net

$a = array(
    "one" => 1, 
    "two" => 2, 
    "three" => 3, 
    "seventeen" => 17 
); 

foreach ($a as $k => $v) { 
    echo "\$a[$k] => $v.\n"; 
} 

in der foreach können Sie tun, einen Vergleich der jeder Schlüssel zu etwas, das Sie suchen

+1

Wo ist der Vergleich? –

+0

Nun, ich habe es nicht zur Verfügung gestellt, da es 99% da ist, aber der Code in der foreach-Anweisung würde so aussehen: 'foreach ($ a als $ k => $ v) { if ($ a [$ k] = == '20120504') { echo "\ $ a [$ k] => $ v. \ N"; } } ' –

5
<?php 

// Checks if key exists (doesn't care about it's value). 
// @link http://php.net/manual/en/function.array-key-exists.php 
if (array_key_exists(20120504, $search_array)) { 
    echo $search_array[20120504]; 
} 

// Checks against NULL 
// @link http://php.net/manual/en/function.isset.php 
if (isset($search_array[20120504])) { 
    echo $search_array[20120504]; 
} 

// No warning or error if key doesn't exist plus checks for emptiness. 
// @link http://php.net/manual/en/function.empty.php 
if (!empty($search_array[20120504])) { 
    echo $search_array[20120504]; 
} 

?>