Làm cách nào để lấy kích thước của đối tượng trong PHP?

Bạn chỉ cần sử dụng phương thức Object.keys() cùng với thuộc tính length để lấy độ dài của một đối tượng JavaScript. Phương thức Object.keys() trả về một mảng gồm các tên thuộc tính có thể đếm được của một đối tượng nhất định và thuộc tính length trả về số phần tử trong mảng đó

Hãy xem một ví dụ để hiểu cơ bản nó hoạt động như thế nào

// Sample object
var myObj = {
    make: "Ferrari",
    model: "Portofino",
    fuel: "Petrol",
    year: 2018
};

// Getting object length
var size = Object.keys(myObj).length;
console.log(size); // Prints: 4

Mẹo. Thuộc tính có thể đếm được là những thuộc tính sẽ hiển thị nếu bạn lặp lại đối tượng bằng cách sử dụng vòng lặp for..in hoặc phương thức Object.keys(). Tất cả các thuộc tính được tạo thông qua phép gán đơn giản hoặc thông qua trình khởi tạo thuộc tính đều có thể đếm được theo mặc định

PHP var_sizeof()

Hàm lấy kích thước của bất kỳ biến PHP nào theo byte
Nó phải là công cụ chính xác hơn để tính tổng kích thước của biến PHP hơn là memory_get_usage(), nhưng nó có

Làm thế nào nó hoạt động

var_sizeof() với var_class_sizeof() sử dụng FFI để truy cập cấu trúc bên trong của các biến PHP
Nó tính toán kích thước của các cấu trúc bên trong như zval,

int var_sizeof(mixed $var);
0,
int var_sizeof(mixed $var);
1, v.v. , cũng như bộ nhớ được phân bổ bổ sung cho chúng
Nó không tính toán bộ nhớ của trình xử lý/hàm/v.v.

Yêu cầu

  • PHP >= 7. 4 (với FFI)
  • Linux(x86_64) / Darwin(x86_64)

Cài đặt thế nào

composer require mrsuh/php-var-sizeof

Chức năng

int var_sizeof(mixed $var);

int var_class_sizeof(mixed $var);

Cách sử dụng



require_once __DIR__ . '/vendor/autoload.php';

$int = 1;
printf("variable \$int size: %d bytes\n", var_sizeof($int));

$array = array_fill(0, 100, $a);
printf("variable \$array size: %d bytes\n", var_sizeof($array));

$object = new \stdClass();
printf("variable \$object size: %d bytes\n", var_sizeof($object));
printf("class \$object size: %d bytes\n", var_class_sizeof($object));

var_sizeof so với memory_get_usage

PHP8. 1. 2Linux(x86_64)

typevar_sizeof(byte)memory_get_usage(byte)NULL160boolean(true)160integer(1)160double(1. 5)160string("hello world")2740resource48416callable72384array(count. 0, danh sách. đúng)mảng 3360(đếm. 100, danh sách. đúng)2,1288,248mảng (đếm. 1.000, danh sách. đúng)16,46436,920mảng (đếm. 10.000, danh sách. đúng)262,224528,440mảng (đếm. 100, danh sách. sai)5,1928,248mảng (đếm. 1.000, danh sách. sai)41,03241,016mảng (đếm. 10.000, danh sách. sai)655,432655,416EmptyClass{}7240ClassWithArray{"mảng (đếm. 0, danh sách. đúng)"}40856ClassWithArray{"mảng (đếm. 100, danh sách. true)"}2,2008,304ClassWithArray{"mảng (đếm. 1.000, danh sách. đúng)"}16,53636,976ClassWithArray{"mảng (đếm. 10.000, danh sách. true)"}262,296528,496ClassWithObject{"EmptyClass{}"}14496ArrayIterator{"mảng(đếm. 100, danh sách. đúng)"}2,2648,376ArrayIterator{"mảng (đếm. 100, danh sách. false)"}5,32840,376typevar_class_sizeof(byte)var_sizeof(byte)memory_get_usage(byte)EmptyClass{}1,3627240ClassWithArray{"mảng(đếm. 0, danh sách. đúng)"}1,49440856ClassWithArray{"mảng (đếm. 100, danh sách. true)"}1,4942,2008,304ClassWithArray{"mảng (đếm. 1.000, danh sách. đúng)"}1,49416,53636,976ClassWithArray{"mảng (đếm. 10.000, danh sách. true)"}1,494262,296528,496ClassWithObject{"EmptyClass{}"}1,49514496ArrayIterator{"array(count. 100, danh sách. đúng)"}2,4372,2648,376ArrayIterator{"mảng (đếm. 100, danh sách. sai)"}2,4375,32840,376

⚠️Hạn chế

  • chỉ hoạt động chính xác với các đối tượng userland và SPL \ArrayIterator
  • không hoạt động chính xác với các cấu trúc phức tạp như tiện ích mở rộng/tài nguyên/có thể gọi/chức năng
  • để tính tổng kích thước của một đối tượng, bạn cần sử dụng var_sizeof() với var_class_sizeof()

Đối với những người đóng góp

Làm thế nào để tái tạo một bảng số trên

git clone --recurse-submodules [email protected]:mrsuh/php-var-sizeof.git && cd php-var-sizeof
composer install
docker build -t image-php-var-sizeof .
docker run -it --rm --name my-running-script -v "$PWD":/app image-php-var-sizeof php bin/render-table.php

Cách biên dịch thư viện

________số 8_______

Làm cách nào để tìm kích thước của một đối tượng trong PHP?

Hàm sizeof() trả về số lượng phần tử trong một mảng. Hàm sizeof() là bí danh của hàm count().

Kích thước đối tượng là gì?

Kích thước nói chung là độ lớn hoặc kích thước của một vật . Cụ thể hơn, kích thước hình học (hoặc kích thước không gian) có thể đề cập đến kích thước tuyến tính (chiều dài, chiều rộng, chiều cao, đường kính, chu vi), diện tích hoặc thể tích. Kích thước cũng có thể được đo theo khối lượng, đặc biệt khi giả sử một phạm vi mật độ.

Làm cách nào để đếm số đối tượng trong PHP?

Hàm đếm() dùng để đếm số phần tử của mảng hoặc thuộc tính của đối tượng . Ghi chú. Đối với các đối tượng, nếu bạn đã cài đặt SPL, bạn có thể nối vào bộ đếm () bằng cách triển khai giao diện Có thể đếm được. Giao diện có chính xác một phương thức, Countable. đếm(), trả về giá trị trả về cho hàm đếm().

Làm cách nào để lấy bộ nhớ của một biến trong PHP?

Không có cách nào trực tiếp để biết mức sử dụng bộ nhớ của một biến, nhưng như Gordon đã đề xuất, bạn có thể sử dụng memory_get_usage . Điều đó sẽ trả về tổng dung lượng bộ nhớ được phân bổ, vì vậy bạn có thể sử dụng một giải pháp thay thế và đo lường mức sử dụng trước và sau để biết mức sử dụng của một biến.