2010-02-01 34 views
5

Tôi đang cố gắng tìm các giá trị bên trong một mảng. Mảng này luôn bắt đầu với 0. không may array_search bắt đầu tìm kiếm với phần tử mảng 1. Vì vậy, phần tử đầu tiên luôn bị bỏ qua.Sự cố trong tìm kiếm mảng

Làm cách nào để "thay đổi" mảng này để bắt đầu bằng 1 hoặc bắt đầu tìm kiếm mảng bằng 0? Mảng này xuất phát từ một dịch vụ web XML, vì vậy tôi không thể sửa đổi kết quả.

+0

Có lẽ bạn nên hiển thị mã của bạn và cách bạn tìm kiếm vì rõ ràng 'array_search' hoạt động chính xác Nhưng có lẽ nó không phải là hàm đúng cho mục đích của bạn. –

Trả lời

2

Xem hướng dẫn, nó có thể giúp bạn: http://www.php.net/manual/en/function.array-search.php

Nếu bạn đang cố gắng làm là sử dụng tăng trọng một, bạn có thể làm:

function my_array_search($needle, $haystack, $strict=false) { 
    $key = array_search($needle, $haystack, $strict); 
    if (is_integer($key)) $key++; 
    return $key; 
} 
my_array_search($xml_service_array); 
+0

hmm thanx nhưng u có thể giải thích thêm vì tôi đã sử dụng Zero nhưng không hoạt động. không array_search() bắt đầu tại phím 0? –

+1

chắc chắn rằng phím chỉ mục là Zero, nhìn xuống những gì meagar nói như một ví dụ – Ghazanfari

+0

Ví dụ này về mặt kỹ thuật sẽ giải quyết vấn đề của bạn, nhưng khóa kết quả sẽ trỏ 1 qua phần tử bạn muốn tìm. Bạn vẫn sẽ tìm thấy yếu tố 0 mặc dù. Vì vậy, chìa khóa nó trả về sẽ không thực sự cho bạn biết nơi để tìm dữ liệu. – meagar

13

array_search không không bắt đầu tìm kiếm tại chỉ mục 1. Thử ví dụ này:

<?php 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 
$key = array_search('blue', $array); // $key = 0 
?> 

Bất kể vấn đề gì s với mã của bạn, nó không phải là yếu tố đầu tiên của nó là chỉ số 0.

Có nhiều khả năng bạn đang sử dụng == thay vì === để kiểm tra giá trị trả về. Nếu array_search trả về 0, cho thấy các yếu tố đầu tiên, đoạn code sau sẽ không làm việc:

// doesn't work when element 0 is matched! 
if (false == array_search(...)) { ... } 

Thay vào đó, bạn phải kiểm tra sử dụng ===, mà so sánh cả về giá trị và gõ

// works, even when element 0 is matched 
if (false === array_search(...)) { ... } 
+0

wow thanx buddy đó là tuyệt vời, tôi nghĩ rằng tôi tìm ra vấn đề. –

+0

Được nói trong hộp cảnh báo ** lớn màu đỏ ** trên trang này: http://php.net/manual/en/function.array-search.php Đọc các trang hướng dẫn sử dụng đôi khi thực sự hữu ích! –

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