Tui cũng ko bít kích thước của null là bao nhiêu nhỉ, 1 byte hay 0 byte Integer của PHP là bao nhiêu byte, 4 hay 8? Đếm theo cách thông thường thi cái array trên có thể là 9 hoặc 10 byte. Nhưng serialize cái mảng $a trên thì ra cái này
PHP Code:
a:4:{i:0;N;i:1;i:255;i:2;i:32768;i:3;s:1:"a";}
Phân tích cái chuỗi trên sẽ thấy trong bộ nhớ sẽ có 1 ô chứa kiểu dữ liệu 'a' cho biết $a là array, 1 ô nhớ cho biết số phần tử của $a là 4, rồi đối với mỗi phần tử của $a lại có 1 ô cho biết kiểu, 1 ô chứa giá trị, nếu là string thì phải có thêm chiều dài. Như vậy thật sự $a chiếm bao nhiêu byte trong bộ nhớ PHP ko cho biết điều này. Nhưng tôi chắc chắn 1 điều khi lưu $a vào session hoặc database thì chắc chắn $a chiếm 46 byte .
Trích từ PHP:
The type of a variable is usually not set by the programmer; rather, it is decided at runtime by PHP depending on the context in which that variable is used.
Đúng rồi, các kiểu dữ liệu trong PHP thật ra chỉ là trừu tượng do PHP engine quản lý! Không thể đếm theo cách thông thường như C được!
dùng memory_get_usage() thử xem?
Mình tìm hoài mà không thấy hàm nào thực hiện chức năng này !
Ví dụ bạn xác định kích thức của một array return = byte !
hay hàm _msise (động)
các hàm như sizeof cout điều xác định phần tử của một mãng mà thôi, không xác định được =byte
strlen(serialize($array)) -> không được nốt
$a=array(null,255,32768,"a");
Đúng không nhỉ
a:4:{i:0;N;i:1;i:255;i:2;i:32768;i:3;s:1:"a";}
Trích từ PHP:
dùng memory_get_usage() thử xem?