php标量数据和数组的最大区别是什么


本文给大家讲解的是php标量数据和数组的最大区别,详细内容如下:一个标量只能存放一个数据,而数组可以存放多个数据;且标量类型是值传递,而数组是引用传递。在PHP中,标量数据有四种类型:布尔型、字符串、整型、浮点型,它们一次只能存一个值;而数组是一组数据的集合,可存储任意多个、任意类型的数据。


php标量数据和数组的最大区别是什么


本文适用于windows7系统、PHP7.1版、DELL G3电脑


php标量数据和数组的最大区别


●  最大区别:一个标量只能存放一个数据,而数组可以存放多个数据。


●  其他区别:标量类型是值传递,而数组是引用传递。


什么是标量数据


标量数据类型是数据结构最基础的单元,只能存储一个数据。在 PHP 中的标量数据类型分为四种:


在 PHP 中的标量数据类型


1)布尔型(boolean)


布尔型是 PHP 中较为常用的数据类型之一,它保存一个真值(true) 或 假值(false)


// 代码:
$a = true; // 真值
$b = false; // 假值


2)字符串(string)


字符串是连续的字符序列,由数字、字母、符号组成,字符串的每个字符只占一个字节。字符包含以下几种类型


字符类型名


不可见字符是比较特殊的字符用于控制字符串格式输出,在浏览器上不可见,只是能看到字符串的输出结果。


在 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.定界符(<<<)


如果用传统的输出方法——按字符串输出的话,肯定要有大量的转义符来对字符串中的引号等特殊字符进行转义,以免出现语法错误。如果是一两处还可以容忍,但是要是一个完整的html文本或者是一个200行的js我想是谁都会崩溃的。这就是PHP为什么要引入一个定界符的原因——至少一大部分原因是这样的。


1.PHP 定界符的作用就是按照原样,包括换行格式什么的,输出在其内部的东西;

2.PHP 定界符中字符串内容不需要转义


// 定义
<<<Eof 
…… 
Eof;


不需要对付出转义的好处:直接输出你想要的 html 字符串


$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)


整型数据类型只能包含整数,在 32 位的操作系统中,有效范围是: -2147483648(2的31次方) ~ 217483647 (2的31次方-1)。整型可以使用十进制、八进制和十六进制表示,如:八进制(数字前面必须加0)、十六进制(数字前面必须加0x)


$int1 = 1234;
$int2 = 01234;
$int3 = 0x1234;
 
echo "十进制的结果是:{$int1}<br>";
echo "八进制的结果是:{$int2}<br>";
echo "十六进制的结果是:{$int3}<br>";
结果
十进制的结果是:1234
八进制的结果是:668
十六进制的结果是:4660


注意:如果给定的数值超出了 int 型所能表示的最大范围,将会被当作 float 型处理,这种情况叫做:整型溢出。表达式最后的运算结果超出 int 范围,也会返回 float 型


4)浮点型(float)


浮点型数据类型可以用来存储整数,也可以保存小数。它提供的精度比整数大得多。 在32系统中有效范围: 1.7E-308 ~ 1.7E+308


在 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 中,标量类型数据是值传递的,而复合类型数据(对象和数组)是引用传递的。


但是复合类型数据的引用传递和用 & 符号明确指定的引用传递是有区别的,前者的引用传递是对象引用,而后者是指针引用。


在解释对象引用和指针引用之前,先让咱们 看多个 例子。


<?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标量数据和数组的最大区别就讲到这里了,翼速应用平台内有更多关于后端开发的资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题