2011-07-19 47 views
8

tôi có mã nàyphp array_search trả về 0 cho phần tử đầu tiên?

$restaurant = array('/restaurant_pos/', '/bar_nightclub_pos/') 
$current_page = $_SERVER['REQUEST_URI']; 

if (array_search($current_page, $restaurant)) { 
    echo "KEEP ME"; 
} 

vấn đề là array_search được trở về 0 vì '/ restaurant_pos /' là yếu tố đầu tiên trong mảng đó đang gây ra nếu thất bại ... bất kỳ ý tưởng về làm thế nào để kiểm tra nếu giá trị là trong mảng mà không thất bại trên các yếu tố đầu tiên

Trả lời

24
if (array_search($current_page, $restaurant) !== FALSE) { 
    echo "KEEP ME"; 
} 

tay liên kết: http://php.net/manual/en/function.array-search.php

+2

+1: đây là tài liệu trong cuốn hướng dẫn (tôi sẽ thêm các liên kết đến câu trả lời của bạn) - trong thực tế , họ làm cho một điểm giải thích nó một cách cẩn thận - vì vậy OP rõ ràng đã không nghiên cứu trước khi yêu cầu. – Spudley

+1

Haha, thậm chí không bao giờ thấy rằng bản thân mình. Cảm ơn về điều đó! –

+0

cảm ơn và tôi đã nhìn vào tài liệu và nhận thấy hộp lớn màu đỏ nhưng tôi đã cố gắng! == sai và nó không thành công vì vậy tôi đăng câu hỏi ... cảm ơn @Jan Westerdiep – Trace

0

Từ kinh nghiệm của riêng tôi, nếu bạn nhận được, ví dụ:

Array 
(
    [1] => Array 
     (
      [0] => a 
      [1] => b 
     ) 

    [2] => Array 
     (
      [0] => b 
     ) 
    [4] => Array 
     ( 
      [0] => c 
     ) 
) 

On array_search("a", $array[3]) !== FALSE) nó trả TRUE giống nhau, do đó, để trang trải tất cả các trường hợp, cũng trên null yếu tố, đó là sử dụng tốt hơn:

if ((array_search($element, $array) !== FALSE) && ($array)) { 
    echo "found"; 
} 

Hy vọng nó giúp.

2

Tôi nghĩ rằng nó sẽ được tốt hơn để sử dụng trong trường hợp này in_array()

$restaurant = array('/restaurant_pos/', '/bar_nightclub_pos/') 
$current_page = $_SERVER['REQUEST_URI']; 

if (in_array($current_page, $restaurant)) { 
    echo "KEEP ME"; 
} 

http://php.net/manual/en/function.in-array.php

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