Tôi có một dãy tên phố được sắp xếp theo thứ tự bảng chữ cái mà tôi đã thu thập từ một dịch vụ web. Mảng này tồn tại ở phía máy chủ.Trong PHP, cách nhanh chóng để tìm kiếm một mảng cho các giá trị chứa chuỗi con là gì?
Ở phía máy khách, người dùng bắt đầu nhập tên đường phố mà anh ấy sinh sống và AJAX được sử dụng để trả về danh sách kết quả trùng khớp gần nhất với tên đường phố, cộng với 9 tên đường phố tiếp theo trong mảng danh sách được cập nhật khi anh ấy đang gõ).
Ví dụ, nếu người dùng gõ "al", tôi mong chờ kết quả là một cái gì đó như sau:
- Albany Hwy
- Albens Vale
- Alcaston Rd
- Alex Gỗ Dr
- Alice Rd
- Allawah Ct
- Allen Rd
- Alloway Pl
- Allwood Av
- Alola St
- Amanda Dr
Đây là thử của tôi lúc đó:
$matches = array();
for($i = 0; $i < count($streetNames); $i++)
{
if((stripos($streetNames, $input) === 0 && count($matches) == 0) || count($matches) < 10){
$matches[] = $streetNames[$i];
} else {
break;
}
}
Có ai khác biết một cách nhanh hơn?
Xin lưu ý: Tôi không có quyền kiểm soát cách danh sách này được lấy từ cơ sở dữ liệu - đó là từ một dịch vụ web bên ngoài.
Vâng, để tìm ra * nhanh nhất * cách nào, bạn sẽ phải chuẩn nó để chắc chắn. Nhưng nếu điều này là từ một dịch vụ web bên ngoài, tôi muốn nói việc xây dựng kết nối với webservice sẽ chậm hơn bất kỳ mã nào bạn nhận được để có câu trả lời. – Gordon
Vâng, tôi đã nhận được xung quanh đó bằng cách bộ nhớ đệm dữ liệu trả về từ máy chủ web trong 24 giờ. Các tên đường phố trong đô thị của chúng ta thường không thay đổi nhiều - nhưng có rất nhiều sự phát triển và các đường phố mới xuất hiện mọi lúc nên 24 giờ có vẻ như một lượng thời gian tốt. –