PHP là một ngôn ngữ được gõ động, giống như Ruby, Python hoặc JavaScript. Điều đó có nghĩa là một biến có thể chứa một giá trị thuộc bất kỳ kiểu nào. Loại biến không được biết cho đến khi chương trình thực sự thực thi Show Cách tiếp cận thay thế cho đó là các ngôn ngữ được nhập tĩnh trong đó loại biến được xác định rõ ràng trong mã hoặc được trình biên dịch suy ra trước khi chương trình được thực thi. Bởi vì trong các ngôn ngữ được nhập tĩnh, loại của hầu hết các giá trị đã được biết, chúng có thể thực thi rằng chỉ các hoạt động tương thích mới được thực hiện trên các giá trị đó Lấy chương trình Java này làm ví dụ
Phần quan trọng ở đây là
Trình biên dịch 0 sẽ là một số nguyên và 1 sẽ là một chuỗi
So sánh một số nguyên với một chuỗi không có ý nghĩa trong Java. Có những lập luận khá mạnh mẽ rằng nó không có ý nghĩa ở bất cứ đâu Ngay cả một số ngôn ngữ động cũng từ chối thực thi mã như thế này. Đây là ví dụ tương tự trong Ruby
Việc thực hiện điều này dẫn đến một ngoại lệ vì ngay khi Ruby gặp toán tử so sánh và nhận ra rằng các kiểu không khớp, nó sẽ coi đó là một vấn đề
Hãy làm tương tự trong PHP
Khi chúng tôi thực hiện chương trình này, không có đầu ra nào được in. Nhưng tại sao? PHP không phàn nàn về việc so sánh hai loại không tương thích. Nó đã làm gì đó với giá trị 2 trong 3. Khi một giá trị trong PHP được sử dụng trong ngữ cảnh mà nó thường không phù hợp, PHP sẽ cố gắng chuyển đổi giá trị đó thành một loại tương thích với thao tác đã thử. Trong trường hợp này, chúng tôi cố gắng so sánh một chuỗi với một số nguyên. PHP chuyển đổi cả hai giá trị thành số nguyên để có thể so sánh. Vì 2 không chứa chữ số nào có thể được phân tích cú pháp dưới dạng số, nên PHP chuyển đổi thành 5Bây giờ, sự so sánh là 6 là 7. Đó là lý do tại sao dòng 8 không được thực thiHành vi này, được gọi là "tung hứng kiểu", "ép buộc kiểu" hoặc "đánh máy ngầm" là một trong những nguồn chính gây ra lỗi, lỗ hổng bảo mật và các vấn đề về khả năng bảo trì mã trong PHP. Nó thường là một ý tưởng tốt để tránh nó Tránh tung hứng kiểuLoại bình đẳng an toànHầu hết các toán tử trong PHP có thể gây ra hiện tượng tung hứng kiểu. Ngoại lệ chính là 9, toán tử đẳng thức an toàn kiểu. Nó trả về 0 nếu cả hai giá trị cùng loại và cùng giá trị và nó không cố chuyển đổi chúng thành bất kỳ thứ gì. 1 chỉ kiểm tra các giá trị bằng nhau SAU KHI truyền kiểu ẩnKhi kiểm tra hai giá trị phi đối tượng cho sự bằng nhau, luôn sử dụng ____1_______9 Nó không chỉ ngăn chặn hành vi khó dự đoán mà còn cho thấy rõ rằng bạn muốn kiểm tra sự bình đẳng thực sự trong mã của mình Không có loại an toàn tương đương cho các toán tử so sánh khác, như 3, 4, 5 và 6. Chúng luôn gây ra kiểu truyền ngầm, đôi khi theo những cách không mong muốn. Ví dụ: có thể xảy ra trường hợp hai chuỗi được chuyển thành số nguyên hoặc số float khi so sánh với các toán tử này. Trong hầu hết các trường hợp, chỉ an toàn khi sử dụng chúng với số nguyên. Phao có vấn đề đối với các hoạt động so sánh do tính không chính xác vốn có của chúngSo sánh đối tượngĐối với các đối tượng, các toán tử so sánh hoạt động khác nhau. 1 sẽ trả về true, nếu cả hai giá trị là đối tượng của cùng một lớp và có cùng giá trị trong thuộc tính của chúng. Các thuộc tính được so sánh bằng cách sử dụng lại 1Đối với các đối tượng, 9 sẽ chỉ trả về 0, nếu cả hai giá trị đều là cùng một đối tượng
Các toán tử so sánh không bằng nhau, 3, 4, 5 và 6, làSo sánh chuỗiKhi so sánh các chuỗi, có thể xảy ra trường hợp PHP chuyển đổi cả hai giá trị so sánh thành số nguyên hoặc số float. Để tránh điều đó, hãy sử dụng hàm 5đánh máy rõ ràngMột cách khác để cho phép PHP thực hiện đánh máy ngầm là tự mình làm điều đó một cách rõ ràng. Trong PHP, có một cú pháp đặc biệt để chuyển đổi các loại 6 vào chuỗi 7 trước khi so sánh nó với 2. Thay vì so sánh 9 với 5 như trước đây, bây giờ chúng ta so sánh hai chuỗi và dưới dạng so sánh chuỗi, kết quả thực sự có ý nghĩa. 1 đến trước 2. Vì vậy, nếu bạn đã sử dụng phép so sánh này để sắp xếp danh sách các chuỗi theo thứ tự chữ và số, thì kết quả bây giờ sẽ chính xác hướng dẫn
Đọc thêmĐáng buồn thay, không có quy tắc chung, đơn giản nào để xử lý hành vi của các loại trong PHP. Có quá nhiều ngoại lệ và trường hợp bất ngờ. Đó là lý do tại sao điều quan trọng là phải nhận thức được vấn đề này và tham khảo hướng dẫn sử dụng khi nghi ngờ. Hướng dẫn sử dụng PHP có một chương khá chi tiết về sắp xếp kiểu, toán tử so sánh và các bảng mở rộng về cách các giá trị so sánh với nhau. Thật tốt khi nhớ nơi để tìm những thứ này Tại sao nên sử dụng strcmp trong PHP?So sánh hai chuỗi là một trong những thao tác chuỗi được sử dụng phổ biến nhất trong thực tiễn lập trình và phát triển web. strcmp() là một hàm có sẵn trong PHP và được sử dụng để so sánh hai chuỗi .
Cách tốt nhất để so sánh hai chuỗi trong PHP là gì?Hàm PHP strcmp() . strcmp() là một hàm có sẵn trong PHP được sử dụng để so sánh hai chuỗi.
Làm cách nào để so sánh nếu hai chuỗi giống nhau trong PHP?Trả lời. Sử dụng hàm strcmp() của PHP
. Hàm này lấy hai chuỗi str1 và str2 làm tham số. Hàm strcmp() trả về < 0 nếu str1 nhỏ hơn str2 ; .
Cách tốt nhất để so sánh hai chuỗi là gì?So sánh chuỗi bằng cách sử dụng Đối tượng.
phương thức equals() trong Java để so sánh hai chuỗi hoặc được khởi tạo bằng một từ khóa mới hoặc trực tiếp sử dụng dấu ngoặc kép. Phương thức này kiểm tra xem cả hai đối tượng chuỗi có bằng nhau hay không và nếu có thì trả về true. Nó cũng sẽ trả về true nếu cả hai chuỗi đều rỗng. |