我在手册中搜索了很久,但没有找到关于什么构成“标量”类型的明确说明(例如,如果语言的未来版本引入了新的类型,什么标准将决定它是否是“标量”? - 这超出了仅仅列出当前版本中哪些是标量的范围。)
在其他语言中,它意味着“具有排序运算符” - 也就是说,“小于”及其相关运算符。
它(目前)在 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" 是标量
标量是单个项目或值,与数组和对象等包含多个值的项目相比。这往往是编程方面对这个词的标准定义。整数、字符等是标量。字符串可能被认为是标量,因为它们只包含“一个”值(由所代表的字符表示的值),而不是其他任何东西。
嗨... 对于新手来说,我只想提一下,引用和标量变量不一样。引用是指向标量的指针,就像在 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