PHP中标量和复合数据类型到底是什么?

34gzjxbg  于 2023-08-02  发布在  PHP
关注(0)|答案(2)|浏览(115)

我知道一个数组和一个对象是复合的,因为它们可以存储多个值,而标量是“原始”数据,即一个值。
但是复合类型真的是对象吗?
例如,在Java中,几乎所有东西都是一个对象,Arrayclass的示例化,Map等等,但是在PHP中,是否会发生类似的事情?ArrayArrayObjectMap等。是否继承自Object?
或者它们只是“特殊”的对象?
我在哪里可以找到更多关于这方面的信息?
谢谢你:)

3bygqnnd

3bygqnnd1#

要回答这个问题:
但是复合类型真的是对象吗?
答:对象是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";

ubbxdtey

ubbxdtey2#

但是复合类型真的是对象吗?
给定两个复合类型数组和对象(参见两个结构JSON是建立在),那么在PHP这是一个明确的 * 否 *:array是array(array或associative array/hashmap),only 对象是真正的对象。

字符串是PHP命名法中的标量,而不是数组。没有char类型。
[...]但是在PHP中,是否会发生类似的情况呢?[...]它们是否继承自Object?
对于Array()(现在[]),没有从object继承任何东西。
但是,您可以从实现ArrayAccess,Countable和Traversable的类创建对象,以创建类似数组的对象。

$object = new ArrayObject(['A']);

字符串
尽管如此,PHP并没有单一的超类,它有is_object()test、instanceof操作符和type declarations support for object
在标准PHP库(SPL)和PHP核心中也有一些接口+类层次结构:

我在哪里可以找到更多关于这方面的信息?
language referenceStandard PHP Library (SPL)的PHP手册中。
参考文献:

相关问题