> 백엔드 개발 > PHP 문제 > PHP 스칼라 데이터와 배열의 가장 큰 차이점은 무엇입니까?

PHP 스칼라 데이터와 배열의 가장 큰 차이점은 무엇입니까?

青灯夜游
풀어 주다: 2023-03-16 07:48:02
원래의
1886명이 탐색했습니다.

가장 큰 차이점은 스칼라는 하나의 데이터만 저장할 수 있는 반면 배열은 여러 데이터를 저장할 수 있으며 스칼라 유형은 값으로 전달되는 반면 배열은 참조로 전달된다는 것입니다. PHP에는 부울, 문자열, 정수 및 부동 소수점의 네 가지 유형이 있습니다. 이들은 한 번에 하나의 값만 저장할 수 있으며 배열은 모든 유형의 데이터를 저장할 수 있는 데이터 모음입니다.

PHP 스칼라 데이터와 배열의 가장 큰 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, DELL G3 컴퓨터

PHP 스칼라 데이터와 배열의 차이점

  • 가장 큰 차이점: 스칼라는 하나의 데이터를 저장합니다. 배열은 여러 데이터를 저장할 수 있습니다.

  • 기타 차이점: 스칼라 유형은 값으로 전달되는 반면 배열은 참조로 전달됩니다.

스칼라 데이터란 무엇인가요

스칼라 데이터형은 데이터 구조의 가장 기본적인 단위로, 한 개의 데이터만 저장할 수 있습니다. PHP에는 네 가지 유형의 스칼라 데이터 유형이 있습니다.

유형 함수
boolean(Boolean) 가장 간단한 데이터 유형, 두 가지 값만 포함: true(true) / false( false)
string(문자열) 문자열은 연속된 문자 시퀀스입니다.
integer(정수) 정수 데이터 유형에는 정수 또는 음수가 될 수 있는 모든 정수가 포함됩니다.
float (부동 소수점) 부동 소수점 데이터 유형은 숫자를 저장하는 데에도 사용됩니다. 정수와 달리 소수를 포함합니다.

1) 부울

부울 유형은 가장 일반적으로 사용되는 데이터 중 하나입니다. PHP에서는 참값(true) 또는 거짓값(false)을 저장합니다

// 代码:
$a = true; // 真值
$b = false; // 假值
로그인 후 복사

2) 문자열(string)

문자열은 연속적입니다. 문자 시퀀스는 숫자, 문자, 문자열의 각 문자는 1바이트만 차지합니다. 문자에는 다음 유형이 포함되어 있습니다. character 유형 이름은 1, 2, 3 등과 같은 다음과 같은 다음과 같습니다. , b, c 등

특수 유형보이지 않는 유형예: n(라인 피드), r(캐리지 리턴) , t(탭 문자) 등
예: #, $, ^, & 등

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

在 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 = &#39;kitty&#39;;
echo <<<Eof
<table height="20">
<tr><td>
{$name}<br/>
<script>
var p=&#39;hello world&#39;;
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="brush:php;toolbar:false">";
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 "
"; ?>
로그인 후 복사

这个例子的输出结果是这样的:

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="brush:php;toolbar:false">";
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 "
";
로그인 후 복사

运行结果也许出乎你的预料:

object(SampleClass)#1 (1) {
   ["value"]=>
   int(1)
}
int(1)
로그인 후 복사

改动 $a->value 的值仅仅是改动 了 $a->value 的值,而改动 $b->value 的值却改动 了 $b 本身,这就是对象引用和指针引用的区别。

推荐学习:《PHP视频教程

위 내용은 PHP 스칼라 데이터와 배열의 가장 큰 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿