Làm cách nào để kiểm tra loại biến trong PHP?

1. Tốc độ, vận tốc. Có một sự khác biệt giữa hai loại này, nhưng về tốc độ, nó không liên quan đến việc bạn sử dụng loại nào. echo nhanh hơn một chút vì nó không đặt giá trị trả về nếu bạn thực sự muốn đi sâu vào vấn đề

2. Sự biểu lộ. print() hoạt động giống như một chức năng mà bạn có thể làm. $ret = in "Xin chào thế giới"; . Điều đó có nghĩa là bản in có thể được sử dụng như một phần của biểu thức phức tạp hơn mà tiếng vang không thể. Một ví dụ từ Cẩm nang PHP

$b ? print "true" : print "false";

print cũng là một phần của bảng ưu tiên mà nó cần phải có nếu nó được sử dụng trong một biểu thức phức tạp. Mặc dù nó chỉ nằm ở cuối danh sách ưu tiên. Chỉ , AND OR XOR thấp hơn

3. Thông số). ngữ pháp là. biểu thức tiếng vang [, biểu thức [, biểu thức]. ] Nhưng echo ( biểu thức, biểu thức ) không hợp lệ. Điều này sẽ hợp lệ. echo ("chào bạn"),("đối tác"); . lặp lại "xin chào","đối tác"; . )

PHP là ngôn ngữ lập trình do Rasmus Lerdorf tạo ra vào năm 1994 với mục đích chính là xây dựng trang web. Ngay bây giờ, chúng tôi có thể nói rằng đó là ngôn ngữ kịch bản phía máy chủ có mục đích chung vẫn được hỗ trợ nhiều

Trong PHP, không phải lúc nào chúng ta cũng nhận được các giá trị mong đợi từ các biến. Bởi vì trong các tình huống phát triển phần mềm thực tế, nhà phát triển có thể

  • quên khai báo biến hoặc gán giá trị cho biến đã khai báo
  • quên truyền tham số/tham số cần thiết khi gọi hàm
  • sử dụng kết quả từ yêu cầu API hoặc truy vấn cơ sở dữ liệu có thể có giá trị không mong muốn
  • truy cập trực tiếp vào các biến toàn cục dưới dạng giá trị Cookie hoặc Phiên chưa được xác định hoặc có giá trị không mong muốn

Vì những loại kịch bản này trong quá trình phát triển phần mềm, với tư cách là nhà phát triển, chúng ta cần cẩn thận hơn trong khi viết mã xung quanh. Chúng ta cần nắm lấy phương pháp lập trình phòng thủ, nghĩa là viết mã theo cách chuẩn bị để xử lý các tình huống bất ngờ và luôn thận trọng

Trong trường hợp của chúng tôi, điều đó có nghĩa là khi làm việc với các biến, chúng tôi luôn mong đợi các giá trị của biến là không mong muốn hoặc không mong muốn và chúng tôi nên viết mã bằng cách xem xét điều đó. Đây phải là một trong những cách tiếp cận an toàn nhất để mã hóa

Cộng đồng PHP đã đề cập đến các loại tình huống này với rất nhiều giải pháp khác nhau và trong bài viết này, chúng tôi sẽ đề cập đến các giải pháp này với các chủ đề sau đây

  1. Tầm quan trọng của việc kiểm tra các biến
  2. Cách kiểm tra biến trong PHP bằng hàm có sẵn
  3. Hành vi của các chức năng tích hợp này
  4. Quyết định đúng chức năng
1. Tầm quan trọng của việc kiểm tra các biến

Có một vài ví dụ về tác dụng phụ của việc sử dụng các biến không được kiểm tra

cảnh 1. Sử dụng một biến không được khai báo

echo $undeclaredVariable;

đầu ra

PHP Notice:  Undefined variable: undeclaredVariable

kịch bản 2. Sử dụng một giá trị biến không mong muốn

$emptyUserLastname = "";
echo "Hi Mr. " . $emptyUserLastname;

đầu ra

Hi Mr.

kịch bản 3. Sử dụng phản hồi cuộc gọi dịch vụ tự phụ

function getUserUnsuccessful() {
return array();
}
$user = getUserUnsuccessful();
echo "Welcome Mr. " . $user["LASTNAME"];

đầu ra

PHP Notice:  Undefined index: LASTNAME

Tình huống 4. Sử dụng biến GLOBAL không được kiểm tra

echo $_COOKIE["USER_ID"];

đầu ra

________số 8

Trong các tình huống này, bạn có thể thấy một số thông báo PHP và một số hành vi không mong muốn. Tất nhiên, trong những tình huống như vậy, mã của bạn sẽ không bị lỗi hoặc chấm dứt nhưng sau đó do việc sử dụng biến không được kiểm tra này, bạn có thể gặp phải hành vi không mong muốn của thuật toán, còn có tên gọi khác là lỗi

2. Cách kiểm tra biến trong PHP bằng hàm có sẵn

May mắn là PHP có rất nhiều hàm tích hợp để kiểm tra các biến. Nhưng chúng ta không thể sử dụng chúng mà không biết hành vi chính xác của chúng. Bởi vì nó có thể khiến chúng ta đối mặt với hành vi không mong muốn của thuật toán. Để tránh nó trước tiên, chúng ta cần biết những chức năng nào chúng ta có thể sử dụng và hành vi chính xác của chúng là gì

Điều tôi thích nhất ở PHP là bạn không cần bất kỳ thư viện bên thứ ba nào để giải quyết các loại tình huống này, bởi vì cộng đồng PHP đã đề cập đến rất nhiều chủ đề khác nhau với các chức năng tích hợp sẵn. Vì vậy, bạn không cần phải phát minh lại bánh xe

Phần yêu thích thứ hai về PHP là hầu hết mọi hàm tích hợp đều có thể đọc được, nghĩa là bạn có thể hiểu mục đích và hành vi của chúng chỉ bằng cách đọc tên hàm

Cảnh báo. việc sử dụng bất kỳ hàm nào trong PHP có thể gặp vấn đề về cách truyền tham số hoặc biết giá trị trả về. Đây là một trong những điều bị phàn nàn nhiều nhất về PHP. Người tạo ra PHP Rasmus Lerdorf thậm chí còn đề cập rằng họ không có bất kỳ ví dụ hay nào trong những ngày xưa. Họ chỉ có triển khai C làm ví dụ. Họ chọn gắn bó với điều đó để đạt được mọi thứ trong một khoảng thời gian ngắn

Trong PHP có 2 hàm thường dùng để kiểm tra biến là isset() và empty(). Bây giờ, hãy xem các hàm tích hợp này để kiểm tra các biến và hành vi chính xác của chúng

3. Các hành vi của các chức năng tích hợp này ()

Vì có thể hiểu từ tên hàm, nó kiểm tra xem tham số đã cho có được đặt thành bất kỳ giá trị nào hay không. Vì vậy, nó chấp nhận một biến làm tham số và kiểm tra tham số đã cho vì nó

  • được tuyên bố
  • được gán
  • có bất kỳ giá trị nào ngoại trừ null

Nếu biến có đầy đủ các điều kiện này, hàm isset() sẽ trả về giá trị TRUE. Nếu không, nó sẽ trả về FALSE

Dưới đây là một số ví dụ để sử dụng hàm isset()

var_dump(isset($undeclaredVariable)); // prints bool(false)

$declaredVariable;
var_dump(isset($declaredVariable)); // prints bool(false)

$declaredAndAssignedVariable = NULL;
var_dump(isset($declaredAndAssignedVariable)); // prints bool(false)

$declaredAndAssignedVariableOtherThanNull = 1;
var_dump(isset($declaredAndAssignedVariableOtherThanNull)); // prints bool(true)

$boolean = FALSE;
var_dump(isset($boolean)); // prints bool(true)

$boolean = TRUE;
var_dump(isset($boolean)); // prints bool(true)

$string = "";
var_dump(isset($string)); // prints bool(true)

$string = "0";
var_dump(isset($string)); // prints bool(true)

$string = "A";
var_dump(isset($string)); // prints bool(true)

$integer = 0;
var_dump(isset($integer)); // prints bool(true)

$integer = 1;
var_dump(isset($integer)); // prints bool(true)

$float = 0.0;
var_dump(isset($float)); // prints bool(true)

$float = 0.1;
var_dump(isset($float)); // prints bool(true)

$array = array();
var_dump(isset($array)); // prints bool(true)

$array = array("A");
var_dump(isset($array)); // prints bool(true)

PHP chấp nhận giá trị của nó là NULL cho các biến không được khai báo và chưa được gán. Như bạn có thể thấy rằng ngoài các giá trị không được khai báo, chưa được gán và NULL, hàm isset() trả về TRUE. Hàm case isset() rất hữu ích khi chúng ta muốn đảm bảo biến có được khai báo, gán NULL hay không

trống rỗng()

Chúng ta có thể hiểu sai mục đích của hàm từ tên hàm. Có vẻ như nó làm cho tham số đã cho trống nhưng thực ra nó chỉ kiểm tra xem tham số đã cho có trống hay không. Tôi có thể nghe thấy những phản đối như isEmpty() có thể là một cái tên hay hơn cho chức năng này

Nhưng một lần nữa, đó là vấn đề của thời xưa và vì di sản (không phải là thứ thiêng liêng, thứ hỗ trợ khả năng tương thích ngược của các phiên bản PHP mới và khuyến khích người dùng phiên bản cũ cập nhật phiên bản PHP của họ), nó vẫn như vậy

Nói tóm lại, hàm empty() chấp nhận một tham số để kiểm tra biến đã cho có rỗng hay không. Khi chúng ta xem xét hành vi của nó, nó hoạt động giống như hàm isset() cộng với việc kiểm tra khoảng trống giá trị biến có nghĩa là nếu tham số đã cho bằng

  • VÔ GIÁ TRỊ
  • số nguyên 0, nhân đôi 0. 00, nổi 0. 0
  • một chuỗi rỗng(“)
  • boolean SAI
  • mảng trống

Ngoài ra, hàm này có trường hợp cạnh cũng giả sử một chuỗi có “0”, “0. 0”, “0. 00. ký tự cũng trống

Trong các trường hợp trên, nó trả về TRUE vì hàm rỗng chấp nhận các giá trị này là rỗng

Nhưng tại sao?

Bởi vì hàm void() biến rỗng có nghĩa là kiểm tra giá trị biến theo đẳng thức boolean. Vì vậy, PHP quyết định xem đẳng thức boolean của giá trị biến đã cho là đúng hay sai

Chúng ta có thể thấy đẳng thức boolean của các giá trị với hàm boolval() trả về giá trị boolean của một tham số đã cho từ https. //www. php. net/thủ công/vi/chức năng. boolval. php. Vì vậy, trong PHP

  • VÔ GIÁ TRỊ
  • số nguyên 0
  • nhân đôi 0. 00
  • thả nổi 0. 0…
  • một chuỗi rỗng(“)
  • boolean SAI
  • mảng trống

Giá trị đẳng thức boolean là FALSE. Dựa vào đó nếu chúng ta tính tổng hàm empty()

echo $undeclaredVariable;
0

Chúng ta có thể dễ dàng hiểu hành vi của hàm empty() bằng công thức này. Có thể nói hàm empty() là hàm kiểm tra biến rộng hơn hàm isset(). Vì vậy, chúng ta không cần sử dụng đồng thời các hàm isset() và empty() trong cùng một trường hợp. Đó là tất cả về việc quyết định giá trị rỗng của biến có làm phiền chúng ta hay không. Cuối cùng, chúng ta nên sử dụng ít nhất một trong số chúng để xử lý các biến trong PHP

Dưới đây là một số ví dụ để sử dụng chức năng trống()

PHP Notice:  Undefined variable: undeclaredVariable
0

Vì vậy, bây giờ chúng ta biết rằng chúng ta có thể sử dụng các hàm isset() và empty() để kiểm tra các biến. Khi chúng tôi triển khai chúng cho các tình huống ví dụ của chúng tôi như

cảnh 1. Sử dụng một biến không được khai báo

PHP Notice:  Undefined variable: undeclaredVariable
1

đầu ra

PHP Notice:  Undefined variable: undeclaredVariable
2

kịch bản 2. Sử dụng một giá trị biến không mong muốn

PHP Notice:  Undefined variable: undeclaredVariable
3

đầu ra

PHP Notice:  Undefined variable: undeclaredVariable
4

kịch bản 3. Sử dụng phản hồi cuộc gọi dịch vụ tự phụ

PHP Notice:  Undefined variable: undeclaredVariable
5

đầu ra

PHP Notice:  Undefined variable: undeclaredVariable
4

Tình huống 4. Sử dụng biến GLOBAL không được kiểm tra

PHP Notice:  Undefined variable: undeclaredVariable
7

đầu ra

PHP Notice:  Undefined variable: undeclaredVariable
8

Đối với tất cả các tình huống mã được cập nhật, chúng tôi sẽ loại bỏ các thông báo Thông báo PHP. Đối với kịch bản 1 và 4, chúng tôi cảnh báo người dùng của mình, đối với kịch bản 2 và 3, chúng tôi tránh các hành vi thuật toán không mong muốn

Trường hợp hàm empty() hữu ích để kiểm tra xem biến đã cho có được khai báo, gán và không có giá trị rỗng hay không. Nhưng chúng ta cần cẩn thận với các trường hợp cạnh như chuỗi “0”, “0. 0”, “0. 00”, số nguyên 0, số 0 kép. 00, nổi 0. 0 vân vân. Bởi vì trong các trường hợp cạnh này, thuật toán của chúng tôi có thể chấp nhận các giá trị này là không trống. Vì vậy, thuật toán của chúng tôi có thể hoạt động theo cách không mong muốn nếu chúng tôi coi loại tình huống này

4. Quyết định đúng chức năng

Mẹo để quyết định sử dụng hàm isset() hay empty() là

  • Nếu trường hợp về biến là chúng ta nên xem xét nó đã được khai báo, gán hay chưa null, hãy sử dụng isset()
  • Nếu trường hợp nhiều hơn thế, chúng tôi cũng quan tâm đến việc biến có trống hay không, hãy sử dụng trống (). Nhưng hãy luôn xem xét các trường hợp biên của hàm empty()

Không sử dụng đồng thời các hàm isset() và empty() để kiểm tra cùng một trường hợp. Nó sẽ là sự lặp lại mã không cần thiết

Chỉ các hàm isset() và empty() là không đủ để áp dụng hoàn toàn cách tiếp cận phòng thủ. Chúng ta cần thêm các kiểm tra bổ sung với các hàm tích hợp PHP bổ sung như

  • is_null
  • is_bool
  • is_numeric
  • is_float
  • is_int
  • is_string
  • is_array
  • Là_đối tượng

Bài viết này không đề cập đến các hàm tích hợp PHP bổ sung này nhưng bạn có thể hiểu hành vi của chúng một cách dễ dàng chỉ bằng cách đọc chúng. Ngoài ra, bạn có thể kiểm tra hành vi chính xác của họ từ https. //www. php. net/manual/ bằng cách gõ tên chức năng trên hộp tìm kiếm. Chúng có thể thêm một biện pháp phòng ngừa bổ sung cho thuật toán của bạn nếu bạn sử dụng chúng cùng với hàm isset() hoặc empty()

cảm ơn đã đọc bài viết này. Tôi hy vọng nó sẽ giúp bạn cách xử lý các biến trong PHP. Bạn nên luôn luôn sử dụng phương pháp phòng thủ trong lập trình. Đó là một thói quen rất có lợi, nó cũng sẽ giúp bạn trở thành một lập trình viên giỏi hơn trong tương lai.

Làm cách nào để biết loại biến trong PHP?

Hàm gettype() trả về loại biến.

Làm cách nào để kiểm tra loại đối tượng trong PHP?

Hàm is_object() kiểm tra xem một biến có phải là đối tượng hay không. Hàm này trả về true (1) nếu biến là một đối tượng, ngược lại trả về false/nothing.

Làm cách nào để xem một giá trị biến trong PHP?

Trong PHP có 2 hàm thường dùng để kiểm tra biến là isset() và empty() .

Làm cách nào để kiểm tra kiểu mảng trong PHP?

Hàm is_array() kiểm tra xem một biến có phải là mảng hay không. Hàm này trả về true (1) nếu biến là một mảng, ngược lại trả về false/nothing.