Hàm so sánh trong PHP không hoạt động

Cập nhật lần cuối vào

Đã bao giờ bạn viết code PHP nhưng khi gặp hàm so sánh chuỗi thì nó không chịu hoạt động hay chưa? Rõ ràng khi bạn code trên máy tính và up lên hosting này thì vẫn chạy bình thường, nhưng khi upload code lên hosting khác để test thì lại không được, đây quả thật là một điều đau đầu.

Đập phá laptop

Những lúc như thế này thật dễ khiến chúng ta bực mình, chỉ muốn đập nát máy tính. Nhưng mà đừng làm thế nhé, hãy bỏ công việc qua một bên và đi lòng vòng giải lao hoặc chuyển sang làm việc khác, tới một lúc nào đó bạn sẽ tìm ra được nguyên nhân.

Bây giờ bạn có thể thử giải quyết vấn đề hàm so sánh không hoạt động trong PHP thông qua bài viết này. Trong đoạn ví dụ bên dưới mình có thử làm một vài biện pháp nhưng rốt cuộc vẫn không thấy nó hoạt động mặc dù cũng với code này nhưng lại hoạt động được trên hosting khác.

$extension = 'jpg';

// Truong hop khong hoat dong 1
if('jpg' == $extension) {
	echo 'Dung';
} else {
	echo 'Sai';
}

// Truong hop khong hoat dong 2
if('jpg' === $extension) {
	echo 'Dung';
} else {
	echo 'Sai';
}

// Truong hop khong hoat dong 3
if(strcmp('jpg', $extension) == 0) {
	echo 'Dung';
} else {
	echo 'Sai';
}

Theo như đoạn code ví dụ bên trên, rõ ràng là không có gì sai ở đây cả, tất cả 3 trường hợp đều xuất ra kết quả là Đúng nhưng trên một hosting nào đó lại không hoạt động, thật không thể hiểu nổi. Thế là không còn cách nào khác mình phải thử lại lần nữa bằng cách so sách 2 string với nhau chứ không so sánh với biến nữa.

// Truong hop hoat dong 1
if('jpg' == 'jpg') {
	echo 'Dung';
} else {
	echo 'Sai';
}

Rõ ràng đoạn code trên hoạt động, nhưng khi gán jpg cho biến $extension thì nó không chạy. Điều này dẫn đến suy nghĩ là do cái biến, cuối cùng mình đã thử dùng hàm trim thì mọi thứ đều ok.

$extension = trim($extension);

Theo như mắt thường mình thấy thì không có thừa khoảng trắng nào trong biến $extension, và điều này là đúng vì nó vẫn hoạt động được trên đại đa số hosting và localhost. Thế nhưng bạn chỉ gặp vấn đề là ở hosting hiện tại nó không chạy, do vậy bạn cần sử dụng hàm trim nếu như bạn gặp phải trường hợp như thế này.

Như vậy là bạn đã giải quyết được tình hình hàm so sánh trong PHP không hoạt động, qua đây thì mình rút ra kết luận là máy móc không phải lúc nào cũng đúng, do vậy cứ rà tất cả trường hợp và phòng trước, cứ thêm hàm trim vào nếu bạn muốn so sánh chuỗi bất kỳ. Chúc bạn thành công.

Theo dõi
Thông báo của
guest

3 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Giấy phép vệ sinh an toàn thực phẩm

Mình thấy ví dụ trên là do so sánh ngược, nhưng dùng hàm trim thì quá tuyệt, mình mới biết khi thử ví dụ của bạn. Thanks

Tuấn
Tuấn
7 năm trước

Nói như bạn là ko đúng, Hàm so sánh trong PHP vẫn hoạt động đúng đó chứ.
Cái sai là do người lập trình mà thôi, lỗi này thường là
– do người lập trình đi copy code/text nơi khác mà không phải tự gõ ra
– do trích xuất url từ 1 đoạn text rồi get extension
=> lập trình viên debug kém, cần trau dồi thêm

=> text chưa clean. trong trình soạn thảo dùng view/show symbol/show all charactors sẽ nhìn thấy ký tự đặc biệt.