在手册中搜索了一番,我没有找到关于是什么构成“标量”类型的明确说明(例如,如果语言的未来版本引入了新的类型,什么标准将决定它是否是“标量”?——这不仅仅是列出当前版本中的标量类型)。
在其他语言中,这意味着“具有排序运算符”——即“小于”及其相关运算符。
它(目前)在 PHP 中似乎具有相同的含义。
(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)
is_scalar — 判断变量是否为标量
判断一个表达式是否计算为标量值。
参见 标量类型 获取更多信息。
注意:
is_scalar() 不认为 资源 类型的值为标量,因为资源是抽象数据类型,目前基于整数。不应依赖此实现细节,因为它可能会更改。
注意:
is_scalar() 不认为 NULL 为标量。
value
要评估的变量。
示例 #1 is_scalar() 示例
<?php
function show_var($var)
{
if (is_scalar($var)) {
echo $var;
} else {
var_dump($var);
}
}
$pi = 3.1416;
$proteins = array("hemoglobin", "cytochrome c oxidase", "ferredoxin");
show_var($pi);
show_var($proteins)
?>
以上示例将输出
3.1416 array(3) { [0]=> string(10) "hemoglobin" [1]=> string(20) "cytochrome c oxidase" [2]=> string(10) "ferredoxin" }
在手册中搜索了一番,我没有找到关于是什么构成“标量”类型的明确说明(例如,如果语言的未来版本引入了新的类型,什么标准将决定它是否是“标量”?——这不仅仅是列出当前版本中的标量类型)。
在其他语言中,这意味着“具有排序运算符”——即“小于”及其相关运算符。
它(目前)在 PHP 中似乎具有相同的含义。
对前面注释的另一个警告
> 只是一个警告,因为空值似乎不是标量。
该陈述是错误的——或者至少在比测试版本更新的版本中已修复。以下代码在 PHP 4.3.9 上生成了以下输出。
代码
<?php
echo('is_scalar() test:'.EOL);
echo("NULL: " . print_R(is_scalar(NULL), true) . EOL);
echo("false: " . print_R(is_scalar(false), true) . EOL);
echo("(empty): " . print_R(is_scalar(''), true) . EOL);
echo("0: " . print_R(is_scalar(0), true) . EOL);
echo("'0': " . print_R(is_scalar('0'), true) . EOL);
?>
输出
is_scalar() test
NULL
false: 1
(empty): 1
0: 1
'0': 1
因此
* NULL 不是标量
* false、(空字符串)、0 和 "0" 是标量
标量是单个项目或值,与具有多个值的数组和对象等相比。这往往是编程方面该词的标准定义。整数、字符等是标量。字符串可能被认为是标量,因为它们只保存“一个”值(由表示的字符表示的值)而没有其他任何东西。