2012-05-05 44 views
20

Tôi đã tự hỏi cách tốt nhất để tìm kiếm khóa trong mảng là gì và trả về giá trị của nó. Một cái gì đó như array_search nhưng cho các phím. Một vòng lặp sẽ là cách tốt nhất?tìm kiếm khóa mảng php và nhận giá trị

Array:

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

Value tôi đang tìm kiếm: 20120504

Trả lời

50

Mấu chốt đã là ... ehm ... chính

echo $array[20120504]; 

Nếu bạn không chắc chắn, nếu khóa tồn tại, hãy kiểm tra nó

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

Tiểu Ngoài:

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

Người ta có thể tranh luận, rằng @ là xấu, nhưng giữ cho nó nghiêm trọng: Đây là dễ đọc hơn và thẳng về phía trước, không phải là?

Cập nhật: Với PHP7 dụ trước đây của tôi là nếu không có sự sai sót silencer

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

như tôi nghĩ, tất cả các câu trả lời khác nhau cho điều này. Điều này làm việc tuyệt vời và là đơn giản nhất. –

+4

'Chìa khóa đã là ... ehm ... key' - điều này thực sự hữu ích :) Trong cái nóng của khoảnh khắc, người ta thực sự có thể quên được điều hiển nhiên. Cảm ơn vì đã tiết kiệm thời gian cho tôi! –

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

Điều này chỉ hữu ích nếu bạn muốn biết chỉ mục của khóa ... – Matthew

+0

@Matthew: OP đã tuyên bố: "Giá trị tôi đang tìm kiếm: 20120504". Vì vậy, đó là một giả định an toàn rằng ông biết những gì ông đang tìm kiếm. –

-1

Dưới đây là một ví dụ trực tiếp từ PHP.net

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

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

trong foreach bạn có thể làm một so sánh của mỗi khóa cho một thứ mà bạn đang tìm kiếm

+1

So sánh ở đâu? –

+0

Vâng tôi đã không cung cấp nó vì nó có 99% ở đó nhưng mã trong báo cáo foreach sẽ giống như thế này 'foreach ($ a as $ 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]; 
} 

?> 
Các vấn đề liên quan