is_scalar

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

is_scalar 查找变量是否是标量

描述

is_scalar(混合类型 $value): 布尔型

查找给定变量是否为标量。

标量变量是指包含 整型浮点型字符串布尔型 的变量。类型 数组对象资源空值 不是标量。

注意:

is_scalar() 不认为 资源 类型的值为标量,因为资源是抽象数据类型,目前基于整数。不应依赖此实现细节,因为它可能会更改。

注意:

is_scalar() 不认为 NULL 为标量。

参数

value

要评估的变量。

返回值

如果 value 是标量,则返回 true,否则返回 false

示例

示例 #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"
}

参见

添加笔记

用户贡献的笔记 4 个笔记

17
Dr K
19 年前
我在手册中搜索了很久,但没有找到关于什么构成“标量”类型的明确说明(例如,如果语言的未来版本引入了新的类型,什么标准将决定它是否是“标量”? - 这超出了仅仅列出当前版本中哪些是标量的范围。)

在其他语言中,它意味着“具有排序运算符” - 也就是说,“小于”及其相关运算符。

它(目前)在 PHP 中似乎具有相同的含义。
11
匿名
18 年前
对上一条笔记的另一个警告
> 只是一个警告,因为似乎空值不是标量。

该语句是错误的 - 或者,至少在比测试版本更新的版本中已修复。以下代码在 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" 是标量
6
efelch at gmail dot com
18 年前
标量是单个项目或值,与数组和对象等包含多个值的项目相比。这往往是编程方面对这个词的标准定义。整数、字符等是标量。字符串可能被认为是标量,因为它们只包含“一个”值(由所代表的字符表示的值),而不是其他任何东西。
-23
popanowel HAT hotmailZ DOT cum
20 年前
嗨... 对于新手来说,我只想提一下,引用和标量变量不一样。引用是指向标量的指针,就像在 C 或 C++ 中一样。

<? php // 简单引用到标量

$a = 2;
$ref = & $a;

echo "$a <br> $ref";

?>
这应该打印出:“2 <br> 2”。

标量类也存在。请看下面
<? php

class Object_t {

var $a;

function Object_t () // 构造函数
{
$this->a = 1;
}

}

$a = new Object_t; // 我们定义一个标量对象

$ref_a = &a;

echo "$a->a <br> $ref->a";

?>
同样,这应该输出:“1 <br> 1”;

以下是 OOP 中使用的另一种方法,它只在标量对象的引用上工作。使用这种方法,您永远不必问自己是在处理标量的副本还是其引用。您将只拥有对标量对象的引用。如果您想复制标量对象,则必须为此目的创建一个函数,该函数将按引用读取值并将它们分配给另一个相同类型的标量... 或者分配给其他类型,这取决于您在那一刻的愿望。
<?php

class objet_t {
var
$a;

function
object_t
{
$this->a = "patate_poil";
}
}

function &
get_ref($object_type)
{
// 在这里,我们在内存中创建一个标量对象
// 然后我们将其按引用返回给调用
// 控制范围。
return &new $object_type;
}

$ref_object_t = get_ref(object_t);

echo
"$ref_object_t->a <br>";

?>
这应该输出:“patate_poil <br>”。

我试图说明的是,标量变量在内存中是对象,而引用通常是一个变量(标量对象),它包含另一个标量对象的地址,而该标量对象包含您想使用引用访问的信息。

祝你好运!

otek 是 popanowel HAT hotmailZ DOT cum
To Top