Hàm isset[] trong PHP kiểm tra xem giá trị của một biến đã được đặt chưa. điều này có thể hữu ích trong các ứng dụng cho phép người dùng đăng nhập hoặc đảm bảo rằng các biến thực sự được đặt khi một lượng lớn dữ liệu phải được kéo vào ứng dụng của bạn
tôi sẽ thành thật. hầu hết các bài đăng mà tôi viết là do tôi đã giải quyết vấn đề cho khách hàng hoặc vì tôi đã giải quyết vấn đề mà Quá khứ-david đã tạo ra. Đây là một trong những vấn đề về PD, nơi tôi đã viết một số mã ngừng hoạt động. Khi tôi xem xét nó, hóa ra là tôi đã sử dụng sai chức năng để kiểm tra một biến trong PHP
Có nhiều hàm được tạo để kiểm tra trạng thái và giá trị của các biến, bao gồm cả những hàm có thể cho bạn biết liệu có bất kỳ thứ gì có sẵn để sử dụng hay không. Ba trong số các chức năng dễ nhầm lẫn này là
5,Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
6 vàCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
7Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Công cụ kiểm tra biến tích hợp
Cả ba hàm này đều được tích hợp sẵn trong PHP, vì vậy chúng phải luôn có sẵn để bạn sử dụng khi viết mã.
6 vàCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5 là cấu trúc ngôn ngữ, trong khiCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
7 là hàm tiêu chuẩn. Chúng ta sẽ xem xét lý do tại sao điều đó lại quan trọng ở phần sau của bài viếtCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Trước khi tôi thảo luận về sự khác biệt và đưa ra một vài ví dụ, đây là những mô tả cho
6,Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5 vàCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
7 từ php. hướng dẫn sử dụng mạngCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
trống rỗng[]
Code language: PHP [php]
empty [ mixed$var ] : bool
Xác định xem một biến có được coi là rỗng không. Một biến được coi là rỗng nếu nó không tồn tại hoặc nếu giá trị của nó bằng
4. empty[] không tạo cảnh báo nếu biến không tồn tại
isset [ mixed$var [, mixed$.. ] ] : bool
Code language: PHP [php]
ngay lập tức[]
Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Xác định xem một biến có được đặt và không phải là
5Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Nếu một biến chưa được đặt bằng unset[], biến đó sẽ không còn được đặt nữa. isset[] sẽ trả về
4 nếu kiểm tra một biến đã được đặt thànhCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5. Cũng xin lưu ý rằng một ký tự rỗng [“\0”] không tương đương với hằng sốCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5 của PHPCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Nếu nhiều tham số được cung cấp thì isset[] sẽ trả về
9 chỉ khi tất cả các tham số được đặt. Đánh giá đi từ trái sang phải và dừng ngay khi gặp một biến chưa được đặtCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
is_null[]
________số 8Tìm xem biến đã cho có phải là
5Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Sự khác biệt giữa các chức năng kiểm tra biến này là gì?
Bạn có thể thấy từ các định nghĩa trên rằng ba chức năng này hoạt động tương tự nhau, nhưng không giống nhau. Bạn phải xác định xem bạn đang cố kiểm tra xem một biến là null, đúng hay sai và liệu biến đó đã được khai báo hay chưa
Khi nào nên sử dụng trống[]
Nếu bạn đang sử dụng
6, bạn có thể kiểm tra xem một biến có sai không, nhưng cũng có thể kiểm tra nếu biến đó không tồn tại. Hàm này được sử dụng tốt nhất khi bạn muốn đảm bảo rằng biến tồn tại và có giá trị không bằng sai. Lưu ý rằng PHP sẽ xử lý các chuỗi rỗng, số nguyên bằng 0, số float bằng 0. 0, mảng trống và giá trị boolean của false là false. Vì vậy, về cơ bản, chỉ sử dụngCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
6 khi bạn muốn đảm bảo rằng có một số giá trị thực cho biếnCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Vì bạn không phải khai báo các biến trước khi sử dụng chúng trong PHP, nên bạn có thể vào vị trí mà bạn đang cố gắng thực hiện các hành động hoặc chạy các thử nghiệm khác trên một biến chưa được khai báo. Mặc dù cách tốt nhất là khai báo các biến của bạn trước khi sử dụng vì lý do này và lý do khác, nhưng vấn đề này là một trong những lý do khiến
6 được sử dụng khác vớiCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Khi nào nên sử dụng isset[]
Nếu bạn đang sử dụng
5, bạn có thể kiểm tra cụ thể xem biến đã được khai báo chưa và giá trị đó có phải là null không. Vì vậy, miễn là bạn có một biến được khai báo có giá trị được đặt và không phải là giá trịCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5, bạn sẽ trả về giá trị true khi kiểm tra biến đó vớiCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5. Đây sẽ là một điều kiện tốt để kiểm tra trước khi thực hiện các kiểm tra khác để thực hiện các hành động trên một biếnCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
1Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Trong ví dụ trên, chúng tôi đã khai báo biến của mình dưới dạng một chuỗi, sau đó kiểm tra xem biến đó có được đặt [đúng không] và nếu nó không bằng một chuỗi khác [không phải là]. Vì cả hai bài kiểm tra đó đều đúng, nên chúng tôi sẽ lặp lại câu trong câu điều kiện đó
Bạn có nên sử dụng is_null[]?
Cuối cùng,
7 hoạt động theo cách tương tự như đối lập vớiCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5, với một điểm khác biệt chính. biến phải được khai báo để trả về true, miễn là nó được khai báo mà không có bất kỳ giá trị nào hoặc được khai báo cụ thể làCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
5Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Tôi đã nói ở trên rằng
5 kiểm tra xem một biến đã được đặt hay chưa, điều này đúng, nhưng nó không thể xử lý việc không có biến nào được đặt và cung cấp đầu ra là false. Điều đó hữu ích nếu ở một nơi nào khác trong mã, cấu trúcCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
12 đã được sử dụng để loại bỏ hoàn toàn một biến khỏi phạm viCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Ngược lại,
7 không những không đánh giá đúng mà còn trả về thông báo do không có khả năng đánh giá. Thông thường nó sẽ giống như thế nàyCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
4Code language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Vì
5 vừa là một cấu trúc ngôn ngữ, vừa có thể xử lý các biến không được khai báo, nên tôi thường khuyên bạn nên sử dụngCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
7 trong mọi tình huống. Nếu bạn cần sử dụngCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
7, tôi có thể khuyên bạn nên tìm cách viết lại mã của mình để thay thếCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Xây dựng ngôn ngữ vs. Chức năng tích hợp
Tôi đã đề cập trước đó rằng
5 vàCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
6 đều là cấu trúc ngôn ngữ trong PHP, trong đóCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
7 là hàm dựng sẵn. Cấu trúc ngôn ngữ là các từ khóa dành riêng có thể đánh giá bất cứ thứ gì theo sau chúng theo một cách cụ thể. Điều đó có nghĩa là nó đã biết phải làm gì mà không cần phải tìm định nghĩa của cấu trúc giống như một hàmCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Những điều chính cần lưu ý giữa hai điều này khi đánh giá mã của bạn là các cấu trúc ngôn ngữ trong PHP nhanh hơn một chút [nhưng thực sự không đủ để lo lắng về việc tối ưu hóa tốc độ], chúng không thể được sử dụng trong các hàm biến và chúng cũng không'
Nhiều lần tôi thấy các cảnh báo và thông báo vì một biến chưa được khai báo và không ai xác nhận rằng biến đó đã tồn tại trước khi thử thực hiện một số kiểm tra có điều kiện khác với nó. Sử dụng
5 vàCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
6 có thể tránh được những lỗi đó trong một chặng đường dàiCode language: PHP [php]
isset [ mixed$var [, mixed$.. ] ] : bool
Ví dụ về đầu ra của ba chức năng này
Bảng dưới đây được lấy trực tiếp từ bản demo do Virendra Chandak tạo trên trang cá nhân của anh ấy. Bạn có thể xem demo tại đây