cuốn sách gpt4 ai đã làm

php - if($val) so với if($val != "") so với if(!empty($val)) - cái nào?

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-10-31 23:02:47 26 4
mua khóa gpt4 Nike

Tôi thấy nhiều người sử dụng nhiều cách khác nhau để kiểm tra xem một biến có trống hay không và dường như thực sự không có sự đồng thuận nào cả. tôi nghe nói nếu($foo)if(!empty($foo)) hoặc nếu($foo != ""). Điều này có đúng không?

Tôi biết đây là một câu hỏi rất đơn giản nhưng tôi thực sự muốn biết. Có sự khác biệt nào không? Tôi nên sử dụng phương pháp nào?

câu trả lời hay nhất

Sự khác biệt giữa thử nghiệm trần trụi và so sánh chuỗi trống

nếu($foo != "") Tương đương với nếu($foo) Hầu hết thời gian, nhưng không phải luôn luôn.

Để xem sự khác biệt ở đâu, hãy xem xét hành vi của toán tử so sánhcùng với chuyển đổi sang quy tắc chuỗiĐối với trường hợp đầu tiên,chuyển đổi sang quy tắc booleanĐối với trường hợp thứ hai.

Những gì tôi tìm thấy là:

  • nếu như $foo === mảng(),nếu($foo != "") Việc kiểm tra sẽ thành công (mảng "lớn hơn" chuỗi), nhưng nếu($foo) Thử nghiệm sẽ thất bại (mảng trống được chuyển đổi thành giá trị bool SAI)
  • nếu như $foo === "0"(sợi dây),nếu($foo != "") Thử nghiệm sẽ thành công lần nữa (rõ ràng), nhưngnếu($foo) Bài kiểm tra sẽ thất bại(Chuỗi "0" Chuyển đổi sang giá trị bool SAI)
  • nếu như $foo là một đối tượng SimpleXML được tạo từ một thẻ trống,nếu($foo != "") Thử nghiệm sẽ thành công lần nữa (đối tượng "lớn hơn" chuỗi), nhưng nếu($foo) Thử nghiệm sẽ thất bại (đối tượng đó được chuyển đổi thành giá trị bool SAI)

Xem sự khác biệt trong hành động .

Một cách tốt hơn để kiểm tra

Phương pháp thử nghiệm ưa thíchĐúngif(!empty($foo)),NóKHÔNGHoàn toàn giống như trên:

  1. nó sẽ không đau khổ nếu($foo != "") Sự mâu thuẫn (mà IMHO đơn giản là khủng khiếp).
  2. nếu như $foo không nằm trong phạm vi hiện tại, nó sẽ không được tạo E_NOTICE, đó là lý do tại sao nó tốt hơn nếu($foo) .

Nhưng đây là một cảnh báo: nếu $foo === '0'(một chuỗi có độ dài 1), sau đó trống($foo) sẽ trở lại ĐÚNG VẬY, thường là (nhưng không nhất thiếtluôn luôn) bạn muốn. Nhưng nếu($foo) Đây cũng là trường hợp.

Đôi khi bạn cần sử dụng cùng một toán tử để kiểm tra

Cuối cùng, khi bạn muốn kiểm tra một loại giá trị cụ thể, bạn phải xử lý các ngoại lệ cho các tình huống trên. Ví dụ,strpos có thể trở lại 0, và cũng có thể quay trở lại SAI. Cả hai giá trị sẽ thất bại if(strpos(...)) các bài kiểm tra, nhưng chúng có ý nghĩa hoàn toàn khác nhau. Trong những trường hợp này, hãy sử dụng toán tử giống hệt nhau Chạy thử nghiệm theo thứ tự:if(strpos() === sai).

Về php - if($val) so với if($val != "") so với if(!empty($val)) - cái nào? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/7384913/

26 4 0
Hồ Xil
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress