Hướng dẫn how can we test the specific data type in php? - làm thế nào chúng ta có thể kiểm tra kiểu dữ liệu cụ thể trong php?

Chương này là từ cuốn sách 

Loại dữ liệu

Các loại dữ liệu khác nhau chiếm lượng bộ nhớ khác nhau và có thể được xử lý khác nhau khi chúng được thao tác trong một tập lệnh. Do đó, một số ngôn ngữ lập trình yêu cầu lập trình viên khai báo trước loại dữ liệu mà một biến sẽ chứa. Ngược lại, PHP được gõ lỏng lẻo, có nghĩa là nó sẽ xác định loại dữ liệu tại thời điểm dữ liệu được gán cho từng biến.

Việc đánh máy tự động này là một phước lành hỗn hợp. Một mặt, điều đó có nghĩa là các biến có thể được sử dụng linh hoạt trong một trường hợp, một biến có thể giữ một chuỗi và sau đó trong tập lệnh, nó có thể giữ một số nguyên hoặc một số loại dữ liệu khác. Mặt khác, tính linh hoạt này có thể dẫn đến các vấn đề trong các tập lệnh lớn hơn nếu bạn đặc biệt mong đợi một biến sẽ giữ một loại dữ liệu khi thực tế nó giữ một cái gì đó hoàn toàn khác. Ví dụ: giả sử rằng bạn đã tạo mã để thao tác một biến mảng. Nếu biến trong câu hỏi thay vào đó chứa một giá trị số và không có cấu trúc mảng, các lỗi sẽ xảy ra khi mã cố gắng thực hiện các hoạt động dành riêng cho mảng trên biến.

Bảng 5.1 cho thấy tám loại dữ liệu tiêu chuẩn có sẵn trong PHP.

Bảng 5.1. Các loại dữ liệu tiêu chuẩn

Loại hình

Thí dụ

Sự mô tả

Boolean

true

Một trong những giá trị đặc biệt đúng hay sai

Số nguyên

5

Toàn bộ số

Phao hoặc gấp đôi

3.234

Một số điểm nổi

Sợi dây

"hello"

Một bộ sưu tập các ký tự

Sự vật

Một ví dụ của một lớp học

Mảng

Một tập hợp các khóa và giá trị được đặt hàng

Nguồn

Tham chiếu đến tài nguyên của bên thứ ba (ví dụ: cơ sở dữ liệu)

VÔ GIÁ TRỊ

Một biến không chính thức

Các loại tài nguyên thường được trả lại bởi các chức năng liên quan đến các ứng dụng hoặc tệp bên ngoài. Ví dụ: bạn sẽ thấy các tài liệu tham khảo về tài nguyên MySQL ID ID ID trong Chương 18, Tương tác với MySQL bằng PHP. Loại NULL được dành riêng cho các biến đã được khai báo, nhưng không có giá trị nào được gán cho chúng.

PHP có một số chức năng có sẵn để kiểm tra tính hợp lệ của một loại biến cụ thể một cho mỗi loại, trên thực tế. Họ is_* họ các hàm, chẳng hạn như is_bool (), kiểm tra xem một giá trị nhất định có phải là boolean hay không. Liệt kê 5.1 gán các loại dữ liệu khác nhau cho một biến duy nhất và sau đó kiểm tra biến với hàm IS_* thích hợp. Các ý kiến ​​trong mã cho bạn thấy tập lệnh ở đâu trong quá trình.

Liệt kê 5.1. Kiểm tra loại biến

1:  ";
5:  $testing = 5;
6:  echo "is an integer? ".is_int($testing); // checks if integer
7:  echo "
"; 8: $testing = "five"; 9: echo "is a string? ".is_string($testing); // checks if string 10: echo "
"; 11: $testing = 5.024; 12: echo "is a double? ".is_double($testing); // checks if double 13: echo "
"; 14: $testing = true; 15: echo "is boolean? ".is_bool($testing); // checks if boolean 16: echo "
"; 17: $testing = array('apple', 'orange', 'pear'); 18: echo "is an array? ".is_array($testing); // checks if array 19: echo "
"; 20: echo "is numeric? ".is_numeric($testing); // checks if is numeric 21: echo "
"; 22: echo "is a resource? ".is_resource($testing); // checks if is a resource 23: echo "
"; 24: echo "is an array? ".is_array($testing); // checks if is an array 25: echo "
"; 26: ?>

Đặt các dòng này vào một tệp văn bản có tên testType.php và đặt tệp này vào root tài liệu máy chủ web của bạn. Khi bạn truy cập tập lệnh này thông qua trình duyệt web của bạn, nó sẽ tạo ra đầu ra sau:

is null? 1
is an integer? 1
is a string? 1
is a double? 1
is boolean? 1
is an array? 1
is numeric?
is a resource?
is an array? 1

Khi biến kiểm tra $ được khai báo trong dòng 2, không có giá trị nào được gán cho nó, do đó, khi biến được kiểm tra trong dòng 3 để xem liệu nó có phải là null (sử dụng is_null ()), kết quả là 1 (true). Sau đó, các giá trị được gán cho kiểm tra $ bằng cách sử dụng = dấu hiệu trước khi kiểm tra nó với hàm IS_* thích hợp. Một số nguyên, được gán cho biến kiểm tra $ trong dòng 5, là toàn bộ hoặc số thực. Nói một cách đơn giản, bạn có thể nghĩ về một số toàn bộ là một số mà không có dấu thập phân. Một chuỗi, được gán cho biến kiểm tra $ trong dòng 8, là một tập hợp các ký tự. Khi bạn làm việc với các chuỗi trong tập lệnh của mình, chúng phải luôn được bao quanh bởi các dấu ngoặc kép hoặc đơn ("hoặc '). Số bao gồm một điểm thập phân). Một boolean, được gán cho biến kiểm tra $ trong dòng 14, có thể có một trong hai giá trị đặc biệt: true hoặc false. Trong dòng 17, một mảng được tạo bằng hàm mảng () mà bạn 'Sẽ tìm hiểu thêm về chương 8, làm việc với các mảng. Mảng đặc biệt này chứa ba mục và kịch bản báo cáo một cách nghiêm túc $ kiểm tra để có một loại mảng.

Từ dòng 20 đến cuối tập lệnh, không có giá trị nào được chỉ định lại đến $ kiểm tra chỉ đơn giản là loại được kiểm tra. Các dòng 20 và 22 Kiểm tra xem Testing $ là loại số hoặc loại tài nguyên, và vì nó không phải, không có giá trị nào được hiển thị cho người dùng. Trong dòng 24, tập lệnh kiểm tra một lần nữa để xem liệu $ kiểm tra có phải là một mảng hay không và bởi vì nó là, giá trị của 1 được hiển thị.

Thay đổi loại bằng setType ()

PHP cũng cung cấp hàm setType (), được sử dụng để thay đổi loại biến. Để sử dụng SettType (), bạn đặt biến để thay đổi và loại để thay đổi nó thành giữa các dấu ngoặc đơn và tách các phần tử bằng dấu phẩy, như thế này:

settype($variabletochange, 'new type');

Liệt kê 5.2 chuyển đổi giá trị 3.14 (một chiếc phao) thành mỗi trong bốn loại tiêu chuẩn được kiểm tra trong chương này.

Liệt kê 5.2. Thay đổi loại biến với setType ()

1:  "; // double
4:  settype($undecided, 'string');
5:  echo "is ".$undecided." a string? ".is_string($undecided)."
"; // string 6: settype($undecided, 'integer'); 7: echo "is ".$undecided." an integer? ".is_integer($undecided)."
"; // int 8: settype($undecided, 'double'); 9: echo "is ".$undecided." a double? ".is_double($undecided)."
"; // double 10: settype($undecided, 'bool'); 11: echo "is ".$undecided." a boolean? ".is_bool($undecided)."
"; // boolean 12: ?>

Trong mỗi trường hợp, chúng tôi sử dụng hàm IS_* thích hợp để xác nhận kiểu dữ liệu mới và để in giá trị của biến $ chưa quyết định cho trình duyệt bằng Echo. Khi chúng tôi chuyển đổi chuỗi "3.14" thành một số nguyên trong dòng 6, mọi thông tin ngoài điểm thập phân sẽ bị mất mãi mãi. Đó là lý do tại sao $ chưa quyết định chứa 3 sau khi chúng tôi thay đổi nó trở lại gấp đôi trong dòng 8. Cuối cùng, trong dòng 10, chúng tôi chuyển đổi $ chưa quyết định thành boolean. Bất kỳ số nào khác ngoài 0 đều trở thành đúng khi chuyển đổi thành boolean. Khi in boolean trong PHP, true được biểu diễn dưới dạng 1 và false được biểu diễn dưới dạng chuỗi trống, do đó, trong dòng 11, $ chưa quyết định được in là 1.

Đặt các dòng này vào một tệp văn bản có tên SetType.php và đặt tệp này vào root tài liệu máy chủ web của bạn. Khi bạn truy cập tập lệnh này thông qua trình duyệt web của bạn, nó sẽ tạo ra đầu ra sau:

is 3.14 a double? 1
is 3.14 a string? 1
is 3 an integer? 1
is 3 a double? 1
is 1 a boolean? 1

Thay đổi loại bằng cách đúc

Sự khác biệt chính giữa việc sử dụng setType () để thay đổi loại biến hiện có và loại thay đổi bằng cách đúc là thực tế là đúc tạo ra một bản sao, khiến biến ban đầu không bị ảnh hưởng. Để thay đổi loại thông qua đúc, bạn chỉ ra tên của một loại dữ liệu, trong ngoặc đơn, phía trước biến bạn đang sao chép. Ví dụ: dòng sau đây tạo ra một bản sao của biến $ gốc, với một loại cụ thể (số nguyên) và tên mới $ newvar. Biến $ gốc sẽ vẫn có sẵn, và sẽ là loại ban đầu của nó; $ newvar là một biến hoàn toàn mới.

$newvar = (integer) $originalvar

Liệt kê 5.3 minh họa các loại dữ liệu thay đổi thông qua đúc.

Liệt kê 5.3. Đúc một biến

1:  "; // double
5:  $holder = (string) $undecided;
6:  echo "is ".$holder." a string? ".is_string($holder)."
"; // string 7: $holder = (integer) $undecided; 8: echo "is ".$holder." an integer? ".is_integer($holder)."
"; // integer 9: $holder = (double) $undecided; 10: echo "is ".$holder." a double? ".is_double($holder)."
"; // double 11: $holder = (boolean) $undecided; 12: echo "is ".$holder." a boolean? ".is_bool($holder)."
"; // boolean 13: echo "
"; 14: echo "original variable type of $undecided: "; 15: echo gettype($undecided); // double 16: ?>

Liệt kê 5.3 không bao giờ thực sự thay đổi loại biến $ chưa quyết định, vẫn là một gấp đôi trong suốt tập lệnh này, như được minh họa trên dòng 15, trong đó hàm getType () được sử dụng để xác định loại $ chưa quyết định.

Trên thực tế, việc sử dụng $ chưa quyết định tạo ra một bản sao sau đó được chuyển đổi thành loại được chỉ định tại thời điểm diễn viên và được lưu trữ trong giá đỡ $ $. Việc đúc này xảy ra đầu tiên trong dòng 3, và một lần nữa trong các dòng 5, 7, 9 và 11. vì mã chỉ hoạt động với một bản sao $ chưa quyết định và không phải là biến ban đầu, nó không bao giờ mất giá trị ban đầu của nó, vì $ chưa quyết định Biến đã làm trong dòng 6 của danh sách 5.2 khi loại của nó thay đổi từ chuỗi thành số nguyên.

Đặt nội dung của Danh sách 5.3 vào một tệp văn bản có tên CastType.php và đặt tệp này vào root tài liệu máy chủ web của bạn. Khi bạn truy cập tập lệnh này thông qua trình duyệt web của bạn, nó sẽ tạo ra đầu ra sau:

is 3.14 a double? 1
is 3.14 a string? 1
is 3 an integer? 1
is 3.14 a double? 1
is 1 a boolean? 1
original variable type of 3.14: double

Bây giờ, bạn đã thấy cách thay đổi nội dung của biến từ loại này sang loại khác bằng cách sử dụng SettType () hoặc bằng cách đúc, hãy xem xét lý do tại sao điều này có thể hữu ích. Đây không phải là một quy trình mà bạn sẽ phải sử dụng thường xuyên vì PHP tự động thực hiện các biến của bạn cho bạn khi ngữ cảnh của tập lệnh yêu cầu thay đổi. Tuy nhiên, một diễn viên tự động như vậy là tạm thời và bạn có thể muốn tạo một biến liên tục giữ một loại dữ liệu cụ thể, do đó, khả năng thay đổi cụ thể các loại.

Ví dụ: các số mà người dùng gõ vào biểu mẫu HTML sẽ được cung cấp cho tập lệnh của bạn dưới dạng loại chuỗi. Nếu bạn cố gắng thêm hai chuỗi lại với nhau vì chúng chứa các số, PHP sẽ hữu ích chuyển đổi các chuỗi này thành các số trong khi việc bổ sung đang diễn ra. Vì thế

"30cm" + "40cm"

kết quả trong câu trả lời của 70.

Trong quá trình đúc một chuỗi vào một số nguyên hoặc float, PHP sẽ bỏ qua bất kỳ ký tự không phải là số. Chuỗi sẽ bị cắt cụt và bất kỳ ký tự nào khỏi vị trí của ký tự không phải là số đầu tiên đều bị bỏ qua. Vì vậy, trong khi "30cm" được chuyển thành "30", chuỗi "6ft2in" chỉ trở thành 6 vì phần còn lại của chuỗi đánh giá là không.

Bạn có thể muốn tự mình dọn dẹp đầu vào người dùng và sử dụng nó theo một cách cụ thể trong tập lệnh của bạn. Hãy tưởng tượng rằng người dùng đã được yêu cầu gửi một số. Chúng tôi có thể mô phỏng điều này bằng cách khai báo một biến và gán đầu vào của người dùng cho nó:

$test = "30cm";

Như bạn có thể thấy, người dùng đã thêm các đơn vị vào số của mình thay vì nhập "30", người dùng đã nhập "30cm". Bạn có thể đảm bảo rằng đầu vào của người dùng sạch sẽ bằng cách đúc nó dưới dạng số nguyên:

is null? 1
is an integer? 1
is a string? 1
is a double? 1
is boolean? 1
is an array? 1
is numeric?
is a resource?
is an array? 1
0

Đầu ra kết quả sẽ là

is null? 1
is an integer? 1
is a string? 1
is a double? 1
is boolean? 1
is an array? 1
is numeric?
is a resource?
is an array? 1
1

Nếu người dùng đầu vào không được sử dụng và giá trị của biến ban đầu, $ test, đã được sử dụng thay cho $ newtest khi in câu lệnh liên quan đến chiều rộng của một hộp, kết quả sẽ được

is null? 1
is an integer? 1
is a string? 1
is a double? 1
is boolean? 1
is an array? 1
is numeric?
is a resource?
is an array? 1
2

Đầu ra này trông lạ; Trên thực tế, có vẻ như đầu vào của người dùng đã được làm sạch đã được làm sạch (đó chính xác là như vậy).

Tại sao loại thử nghiệm?

Tại sao nó có thể hữu ích khi biết loại biến? Thường có những trường hợp trong lập trình trong đó dữ liệu được truyền cho bạn từ một nguồn khác. Trong Chương 7, bạn sẽ tìm hiểu cách tạo các chức năng trong tập lệnh của mình và dữ liệu thường được truyền giữa một hoặc nhiều chức năng vì chúng có thể chấp nhận thông tin từ mã gọi dưới dạng đối số. Để chức năng hoạt động với dữ liệu được đưa ra, trước tiên, hãy xác minh rằng hàm đã được cung cấp các giá trị của loại dữ liệu chính xác. Ví dụ, một hàm mong đợi dữ liệu có một loại tài nguyên của Google sẽ không hoạt động tốt khi được truyền một chuỗi.

Làm thế nào để bạn kiểm tra và xác minh loại loại dữ liệu trong PHP?

Hàm getType () là một hàm sẵn có trong PHP được sử dụng để có được loại biến. Nó được sử dụng để kiểm tra loại biến hiện có.gettype() function is an inbuilt function in PHP which is used to get the type of a variable. It is used to check the type of existing variable.

Chức năng nào được sử dụng để kiểm tra loại dữ liệu trong PHP?

Định nghĩa và cách sử dụng.Hàm getType () trả về loại biến.gettype() function returns the type of a variable.

Làm thế nào để bạn xác định các loại dữ liệu khác nhau?

Các loại dữ liệu cần biết là:..
Chuỗi (hoặc str hoặc văn bản).Được sử dụng cho sự kết hợp của bất kỳ ký tự nào xuất hiện trên bàn phím, chẳng hạn như chữ cái, số và ký hiệu ..
Nhân vật (hoặc char).Được sử dụng cho các chữ cái đơn ..
Số nguyên (hoặc int).Được sử dụng cho toàn bộ số ..
Float (hoặc thực).....
Boolean (hoặc bool) ..

PHP có kiểm tra loại không?

Trong trường hợp bạn đang tự hỏi: PHP tương đương với loại của JS, là hàm getType ().Người ta luôn có thể kiểm tra loại của một biến bằng cách sử dụng hàm getType () hoặc sử dụng hàm var_dump () và kiểm tra đầu ra của nó.PHP đi kèm với ba loại khác nhau: loại vô hướng, loại hợp chất và các loại đặc biệt.One can always inspect a variable's type using the gettype() function or using the var_dump() function and checking its output. PHP comes with three different kinds of types: scalar types, compound types and special types.