概述
本教程操作环境:windows7系统、PHP8.1版、DELL G3电脑
php标量数据和数组的区别
最大区别:一个标量只能存放一个数据,而数组可以存放多个数据。
其他区别:标量类型是值传递,而数组是引用传递。
什么是标量数据
类型 | 功能 |
---|---|
boolean(布尔型) | 最简单的数据类型,只有两个值:true(真) / false(假) |
string(字符串) | 字符串是连续的字符序列 |
integer(整型) | 整型数据类型包含所有的整数,其可以是整数也可以是负数 |
float(浮点型) | 浮点型数据类型也是用来存储数字,与整型不同它包含小数 |
1)布尔型(boolean)
// 代码:
$a = true; // 真值
$b = false; // 假值
登录后复制
2)字符串(string)
字符类型名 | 内容 |
---|---|
数字类型 | 如:1、2、3等 |
字母类型 | 如:a、b、c等 |
特殊类型 | 如:#、$、^、&等 |
不可见类型 | 如:n(换行符)、r(回车)、t(tab字符)等 |
在 PHP 中有 3 种定义字符串的方式:
a.单引号(')
$a = 'zZ爱吃菜';
登录后复制
b.双引号(")
$b = "zZ爱吃菜";
登录后复制
$a = 'hello';
$b = '$a china';
$c = "$a world"; // 个人建议这样写:$c = "{$a} world"; 不容易产生歧义
echo $b;
echo $c;
结果:
$a china
hello world
登录后复制
c.定界符(<<<)
// 定义
<<<Eof
……
Eof;
登录后复制
$name = 'kitty';
echo <<<Eof
<table height="20">
<tr><td>
{$name}<br/>
<script>
var p='hello world';
document.writeln(p);
</script>
</td></tr>
</table>
<select>
<option>aaaaa</option>
<option>aaaaa</option>
<option>aaaaa</option>
</select>
Eof;
登录后复制
3)整型(integer)
$int1 = 1234;
$int2 = 01234;
$int3 = 0x1234;
echo "十进制的结果是:{$int1}<br>";
echo "八进制的结果是:{$int2}<br>";
echo "十六进制的结果是:{$int3}<br>";
结果
十进制的结果是:1234
八进制的结果是:668
十六进制的结果是:4660
登录后复制
4)浮点型(float)
在 PHP 4.0 之前的版本 浮点型被标识为 double,也叫双精度浮点数,两者没什么区别
// 定义
$a = 1.036;
$b = 2.035;
$c = 3.48E2; // En代表10*n, E1 代表 * 10, $c = 348
echo $c;
结果:348
登录后复制
什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。
因为 PHP 是弱数据类型的编程语言,所以 PHP 中的数组变量可以存储任意多个、任意类型的数据,并且可以实现其他强数据类型中的堆、栈、队列等数据结构的功能。
数组 array 是一组有序的变量,其中每个值被称为一个元素。每个元素由一个特殊的标识符来区分,这个标识符称为键(也称为下标)。
数组中的每个实体都包含两项,分别是键(key)和值(value)。可以通过键值来获取相应的数组元素,这些键可以是数值键,也可以是关联键。如果说变量是存储单个值的容器,那么数组就是存储多个值的容器。
PHP 数组比其他高级语言中的数组更加灵活,不但支持以数字为键名的索引数组,而且支持以字符串或字符串、数字混合为键名的关联数组。而在其他高级语言中,如 Java 或者 C++ 等语言的数组,只支持数字索引数组。
PHP 数组的结构如下图所示:
扩展知识:
在 PHP 中,标量类型数据是值传递的,而复合类型数据(对象和数组)是引用传递的。
但是复合类型数据的引用传递和用 & 符号明确指定的引用传递是有区别的,前者的引用传递是对象引用,而后者是指针引用。
在解释对象引用和指针引用之前,先让咱们 看多个 例子。
<?php
echo "<pre>";
class SampleClass {
var $value;
}
$a = new SampleClass();
$a->value = $a;
$b = new SampleClass();
$b->value = &$b;
echo serialize($a);
echo "n";
echo serialize($b);
echo "n";
echo "</pre>";
?>
登录后复制
这个例子的输出结果是这样的:
O:11:"SampleClass":1:{s:5:"value";r:1;}
O:11:"SampleClass":1:{s:5:"value";R:1;}
登录后复制
大家 会发觉 ,这里变量 $a 的 value 字段的值被序列化成了 r:1,而 $b 的 value 字段的值被序列化成了 R:1。
但是对象引用和指针引用到底有什么区别呢?
看下面这个例子:
echo "<pre>";
class SampleClass {
var $value;
}
$a = new SampleClass();
$a->value = $a;
$b = new SampleClass();
$b->value = &$b;
$a->value = 1;
$b->value = 1;
var_dump($a);
var_dump($b);
echo "</pre>";
登录后复制
运行结果也许出乎你的预料:
object(SampleClass)#1 (1) {
["value"]=>
int(1)
}
int(1)
登录后复制
改动 $a->value 的值仅仅是改动 了 $a->value 的值,而改动 $b->value 的值却改动 了 $b 本身,这就是对象引用和指针引用的区别。
推荐学习:《PHP视频教程》
以上就是php标量数据和数组的最大区别是什么的详细内容,更多请关注靠谱客其它相关文章!
最后
以上就是生动乌龟为你收集整理的php标量数据和数组的最大区别是什么的全部内容,希望文章能够帮你解决php标量数据和数组的最大区别是什么所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复