提问人:Grizzly 提问时间:7/26/2023 更新时间:7/27/2023 访问量:65
PHP 中的标量和复合数据类型到底是什么?
What really are scalar and compound data types in PHP?
问:
我知道数组和对象是复合的,因为其中可以存储多个值,而标量是“原始”数据,即单个值。
但是复合类型真的是对象吗?
例如,在 Java 中,几乎所有东西都是一个对象,一个对象,一个 、 一个 、 一个 、 一个等。它们是否继承自 Object?Array
class
Map
Array
ArrayObject
Map
还是它们只是“特殊”物体?
在哪里可以找到有关此内容的更多信息?
谢谢你:)
答:
要回答这个问题:
但是复合类型真的是对象吗?
答:对象是PHP中的复合数据类型之一,但并非所有复合数据类型都是对象。每种复合数据类型都有特定的用途,用于处理 PHP 中不同类型的数据结构。
初学者的更多详细信息: 标量数据类型表示单个值,这意味着它们一次只能保存一个值。PHP 有四种标量数据类型:
$integerVar = 25;
$floatVar = 6.12;
$stringVar = "Do you know, PHP can go Native ?";
$booleanVar = false;
复合数据类型可以包含多个值或值的集合。PHP 有两种主要的复合数据类型:
// Array
$colors = array("blue", "red", "green");
// Object (casting an array)
$colors = (object)array("blue", "red", "green");
// Object (using a simple stdClass object)
$person = new stdClass();
$person->name = "Adam";
$person->age = 90;
// Object (e.g., a database connection)
$dbConnection = new mysqli("localhost", "login", "password", "database");
echo $dbConnection->server_info, "\n";
但是复合类型真的是对象吗?
给定数组和对象两种复合类型(参见JSON构建的两个结构),那么在PHP中,这是一个明确的否定:数组是数组(数组或关联数组/哈希图),只有对象才是真正的对象。
String 是 PHP 命名法中的标量,而不是数组。没有 char 类型。
[...]但是在PHP中,会发生类似的事情吗?[...]它们是否继承自 Object?
对于 Array()(现在的 []),没有任何东西继承自 object。
但是,您可以从实现 ArrayAccess、Countable 和 Traversable 的类创建对象,以创建类似数组的东西,然后它就是一个对象。
$object = new ArrayObject(['A']);
尽管如此,仍然没有一个超类,PHP 有 is_object() test、instanceof 运算符和对 object 的类型声明支持。
标准 PHP 库 (SPL) 和 PHP 核心中也有一些接口+类层次结构:
在哪里可以找到有关此内容的更多信息?
在 PHP 手册、语言参考和标准 PHP 库 (SPL) 中。
引用:
评论