游客发表

下列数据类型中php5不支持的是

发帖时间:2026-10-17 04:46:43

```html PHP5不支持的下列数据类型

下列数据类型中php5不支持的是

直接说答案:PHP 5 不支持 mixed 类型声明,也不支持 iterable 伪类型,数据更不存在 never 这种返回类型。类型但如果你是不支在选择题里看到“下列数据类型中 PHP5 不支持的是”,最典型的下列选项是 mixed——它直到 PHP 8.0 才作为真正的类型声明出现。另一个高频错误选项是数据 void,但 PHP 7.1 就引入了,类型所以不属于 PHP5。不支而 callable 在 PHP 5.4 就有了,下列array 和 object 更是数据老面孔。真正让 PHP5 卡住的类型是 mixed 和 never,还有 iterable(PHP 7.1 才加)。不支

我翻过 PHP 5.6 的下列官方文档,类型系统里能用的数据标量类型只有 bool、int、类型float、string,而且这些标量类型声明还得等到 PHP 7.0 才正式支持。PHP 5 时代你写函数参数类型,只能写 array、callable(5.4+)或者类名、接口名。想写 int $id?直接报错。所以如果题目问“数据类型”而不是“类型声明”,那范围更窄——PHP 5 的变量实际存储的数据类型有八种:boolean、integer、float、string、array、object、resource、NULL。没有 mixed,没有 void,没有 iterable,没有 never。

真实案例: 2013 年我在一个老项目里写 function sum(iterable $items),PHP 5.6 直接白屏,报错 “Argument 1 passed to sum() must be of the type array, none given”。那时候 iterable 根本不存在,只能退回去写 array,然后手动判断是不是 Traversable。

有人会问:那 mixed 在 PHP 5 里能当注释用吗?能,但那是文档块,不是语言层面的数据类型。PHP 5 的反射 API 也不认识 mixed,你写 @param mixed $value 只是给人看的。PHP 8 的 mixed 是真正的顶层类型,等价于 bool|int|float|string|array|object|resource|null,但 PHP 5 连联合类型都没有,更别提 mixed 了。

另一个容易混淆的是 void。PHP 7.1 引入 void 返回类型,表示函数不返回任何值。PHP 5 里你只能不写返回类型,或者写 @return void 注释。所以如果选择题选项里出现 void,它也是 PHP5 不支持的。但通常出题人更爱考 mixed,因为 void 在 PHP 7.1 就来了,而 mixed 拖到 PHP 8.0,时间跨度更大,更能区分版本。

还有 never——PHP 8.1 的新东西,表示函数永不返回(比如抛异常或死循环)。PHP 5 当然没有。以及 false 作为独立类型(PHP 8.0 允许 false 伪类型,8.2 才允许 true),PHP 5 也不支持。但这类太新了,一般不会出现在“PHP5不支持”的考题里,因为太明显。


我印象很深的是 2015 年帮朋友改一个 PHP 5.3 的 CMS,他想用 function handle(callable $fn),结果 5.3 不支持 callable 类型声明(5.4 才加)。他只好改成 function handle($fn) 然后在函数体里 is_callable($fn) 判断。所以你看,连 callable 在 PHP 5.3 都是不支持的,更别说 mixed 了。但通常我们说“PHP5”默认指 5.6,因为那是最后一个 5.x 版本。5.6 支持 callable、array、类名,不支持标量类型声明,不支持返回类型声明,不支持 mixed、void、iterable、never。

所以回到题目:下列数据类型中 PHP5 不支持的是——如果选项有 mixed、void、iterable、never,那它们全都不支持。但单选题里最标准、最没有争议的答案是 mixed。因为 void 和 iterable 在 PHP 7 就出现了,而 mixed 硬生生等到 PHP 8。PHP 5 连标量类型声明都没有,怎么可能有 mixed?这就像问一个只学过加减法的人会不会解微积分——不是会不会的问题,是根本没这个概念。

最后提一句:PHP 5 的 resource 类型现在在 PHP 8 里也还是伪类型,但 PHP 5 是支持 resource 的,别搞混。不支持的是 mixed,以及所有 PHP 7.0 之后才引入的类型系统特性。如果你在面试里被问到,直接答 mixed,然后补一句“PHP 8.0 才支持”,基本就稳了。

```

    热门排行

    友情链接