Thứ Năm, 29 tháng 8, 2013

Phần 2: Giải đáp thắc mắc về PHP



Tài liệu PHP căn bản sẽ đem lại đầy đủ kiến thức cho người học lập trình và thiết kế website


Tài liệu giúp người học bước đầu hiểu được việc xây dựng 1 trang web hoàn chỉnh sẽ diễn ra như thế nào. Nếu bạn không tự tin vào kiến thức của bản thân, nếu bạn chưa hình dung được việc thiết kế một website như thế nào, và nếu bạn không thật sự giỏi về lập trình.


Thắc mắc số 3: Trong PHP, có tất cả bao nhiêu kiểu dữ liệu cho các biến?

Trong PHP gồm 8 kiểu dữ liệu cơ bản (còn 1 số kiểu không cơ bản khác) và chia ra làm 3 nhóm:

1. Nhóm kiểu dữ liệu vô hướng (scalar type) gồm 4 loại:
boolean
integer
float (floating-point number, aka 'double')
string

2. Nhóm kiểu dữ liệu phức hợp (compound type) gồm 2 kiểu:
array
object

3. Nhóm kiểu dữ liệu đặc biệt (special type) gồm 2 kiểu:
resource
NULL


Thắc mắc số 4: Theo bạn, mỗi khi dùng 1 biến kiểu integer thì trình thông dịch PHP sẽ cấp phát cho biến đó bao nhiêu bộ nhớ? Và cũng liên quan đến thắc mắc này: làm thế nào mà một biến trong PHP có thể lưu trữ các kiểu bất kì?

Chắc chắn là nhiều bạn sẽ vui vẻ và đáp ngay rằng một biến integer sẽ chiếm hết 4 bytes bộ nhớ. Có chắc đơn giản vậy không, chúng ta sẽ cùng đi thử nghiệm để biết chính xác.

Mở chương trình viết mã PHP yêu thích của bạn và nhập đoạn mã đơn giản như sau:
1
2
3
4
<?php
$a= memory_get_usage();
$b = 0;
echo memory_get_usage()-$a;


Hàm memory_get_usage() trả về cho chúng ta giá trị là một số nguyên, giá trị này là số bytes bộ nhớ đã cấp phát để thực thi đoạn script cho tới thời điểm gọi hàm này.

Chạy đoạn script PHP này trên trình duyệt, bạn sẽ thấy kết quả xuất ra (ở dòng số 4) là 160. Các bạn lưu ý là giữa 2 thời điểm gọi memory_get_usage() chúng ta đã sử dụng cả thảy 2 biến kiểu số nguyên (integer) là $a và $b.

Để cho chắc trước khi kết luận, chúng ta thử lại lần thứ 2 bằng cách thêm vô 1 biến ngay sau dòng thứ 2 như sau:
1
2
3
4
5
<?php
$a= memory_get_usage();
$b = 0;
$c = 1000;
echo memory_get_usage()-$a;


Kết quả thu được là số 240. Ở đây, như bạn thấy chúng ta đã sử dụng 3 biến integer gồm $a, $b và $c.

Từ 2 điều trên, chúng ta có thể tạm kết luận rằng mỗi biến kiểu integer sẽ chiếm tất cả 80 bytes bộ nhớ. Chắc chắn đọc tới đây bạn sẽ mắt chữ O miệng chữ A, “cái quái gì xảy ra vậy?” vì chúng ta đã được học rằng biến kiểu integer sẽ chiếm 4 bytes bộ nhớ có thể lưu trữ các giá trị trong khoảng từ -(216 – 1) tới +216. 4 bytes và 80 bytes là 2 con số khác quá xa nhau.

Vâng, với một biến integer chúng ta sẽ tốn tối thiểu (tại sao là tối thiểu chúng ta sẽ đề cập sau) là 80 bytes bộ nhớ. Một con số lớn hơn mong đợi rất nhiều, và lý do vì sao lại như thế chính là phần chìm của tảng băng.

Không có nhận xét nào:

Đăng nhận xét