2010-06-02 62 views
23

Bạn có thể dễ dàng lấy giá trị mảng từ khóa như sau: $value = array[$key] nhưng nếu tôi có giá trị và tôi muốn khóa. Cách tốt nhất để có được nó là gì?Cách lấy mảng KEY từ VALUE?

Trả lời

50

Bạn có thể sử dụng array_search() để tìm khóa khớp đầu tiên.

Từ hướng dẫn:

$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 

$key = array_search('green', $array); // $key = 2; 
$key = array_search('red', $array); // $key = 1; 
14

Bạn có thể sử dụng chức năng array_keys cho điều đó.

Ví dụ:

$array = array("blue", "red", "green", "blue", "blue"); 
print_r(array_keys($array, "blue")); 

này sẽ nhận được chìa khóa từ mảng cho giá trị blue

+0

Đây có phải là điều mà OP đang tìm kiếm không? Tôi đã hiểu nó khác nhau (như một tìm kiếm cho một * giá trị *). –

+0

@Pekka: Hãy xem những gì OP đang tìm kiếm thực sự, mặc dù vậy :) – Sarfraz

+0

array_search và array_keys đều làm việc cho tôi, tuy nhiên array_search thực hiện bước bổ sung là phải lấy giá trị đầu tiên của mảng được array_keys trả về. Vì vậy, tôi sẽ sử dụng array_search, nhưng +1 cho mỗi bạn vì chúng đều là câu trả lời hay. –

0

Không thực sự dễ dàng chiều. Lặp lại các phím cho đến khi bạn tìm thấy mảng [$ key] == $ value

Nếu bạn thực hiện việc này thường xuyên, hãy tạo một mảng đảo ngược/băm để ánh xạ các giá trị về khóa. Hãy nhớ rằng nhiều khóa có thể ánh xạ tới một giá trị duy nhất.

+0

Tôi đồng ý với việc tạo bản đồ ngược lại nếu bạn cần thực hiện nhiều lần tra cứu, nhưng chắc chắn là [một cách dễ dàng] (http://stackoverflow.com/questions/2960066/best-way-to-get-array-key- từ-value/2960083 # 2960083) –

+1

@barrycarter @ Michael_Mrozek, xem array_flip – mmattax

0

giá trị mảng của bạn có thể bản sao như vậy nó sẽ không cung cấp cho bạn các phím chính xác. Tuy nhiên cách tôi nghĩ là tốt giống như lặp lại và đọc các phím

3
$arr = array('mango', 'orange', 'banana'); 
$a = array_flip($arr); 
$key = $a['orange']; 
+0

Nhanh nhất - không so sánh, chỉ cần lật các giá trị bằng các phím. – fkaufusi

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