2012-05-05 11 views
20

Zastanawiam się, jaki jest najlepszy sposób wyszukiwania kluczy w tablicy i zwrócenia jej wartości. Coś jak array_search, ale dla kluczy. Czy pętla byłaby najlepsza?klucz php i otrzymanie wartości

Array:

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

Wartość szukam: 20120504

Odpowiedz

50

klucz jest już ... ehm ... klucz

echo $array[20120504]; 

Jeśli nie jesteś pewien, czy klucz istnieje, przetestuj go pod kątem

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

niewielkim dodatkiem:

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

Ktoś może argumentować, że @ jest zły, ale utrzymać go poważnie: To jest bardziej czytelne i proste, nie?

Aktualizacja: Z PHP7 mój poprzedni przykład jest możliwe bez błędów tłumika

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

jak myślałem, wiele różnych odpowiedzi na to. Działa to świetnie i jest najprostszy. –

+4

'Klucz jest już kluczem ... ehm ... - to naprawdę pomocne :) W upale chwili można naprawdę zapomnieć o tym, co oczywiste. Dziękuję za oszczędność czasu! –

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

Jest to przydatne tylko, jeśli chcesz poznać indeks klucza ... – Matthew

+0

@Matthew: OP stwierdził: "Wartość, której szukam: 20120504". Więc jest to bezpieczne założenie, że wie, czego szuka. –

-1

Oto przykład prosto z php.net

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

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

w foreach można zrobić porównanie każdy klucz do czegoś, czego szukasz

+1

Gdzie jest porównanie? –

+0

Cóż, nie dostarczyłem go, ponieważ zawiera 99%, ale kod w instrukcji foreach wyglądałby tak: foreach ($ a jako $ 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]; 
} 

?> 
Powiązane problemy