溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php標(biāo)量數(shù)據(jù)和數(shù)組有什么區(qū)別

發(fā)布時(shí)間:2022-05-20 09:44:40 來源:億速云 閱讀:183 作者:zzz 欄目:編程語言

這篇“php標(biāo)量數(shù)據(jù)和數(shù)組有什么區(qū)別”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“php標(biāo)量數(shù)據(jù)和數(shù)組有什么區(qū)別”文章吧。

最大區(qū)別是:一個(gè)標(biāo)量只能存放一個(gè)數(shù)據(jù),而數(shù)組可以存放多個(gè)數(shù)據(jù);且標(biāo)量類型是值傳遞,而數(shù)組是引用傳遞。在PHP中,標(biāo)量數(shù)據(jù)有四種類型:布爾型、字符串、整型、浮點(diǎn)型,它們一次只能存一個(gè)值;而數(shù)組是一組數(shù)據(jù)的集合,可存儲(chǔ)任意多個(gè)、任意類型的數(shù)據(jù)。

php標(biāo)量數(shù)據(jù)和數(shù)組有什么區(qū)別

本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦

php標(biāo)量數(shù)據(jù)和數(shù)組的區(qū)別

  • 最大區(qū)別:一個(gè)標(biāo)量只能存放一個(gè)數(shù)據(jù),而數(shù)組可以存放多個(gè)數(shù)據(jù)。

  • 其他區(qū)別:標(biāo)量類型是值傳遞,而數(shù)組是引用傳遞。

什么是標(biāo)量數(shù)據(jù)

標(biāo)量數(shù)據(jù)類型是數(shù)據(jù)結(jié)構(gòu)最基礎(chǔ)的單元,只能存儲(chǔ)一個(gè)數(shù)據(jù)。在 PHP 中的標(biāo)量數(shù)據(jù)類型分為四種:

類型功能
boolean(布爾型)最簡(jiǎn)單的數(shù)據(jù)類型,只有兩個(gè)值:true(真) / false(假)
string(字符串)字符串是連續(xù)的字符序列
integer(整型)整型數(shù)據(jù)類型包含所有的整數(shù),其可以是整數(shù)也可以是負(fù)數(shù)
float(浮點(diǎn)型)浮點(diǎn)型數(shù)據(jù)類型也是用來存儲(chǔ)數(shù)字,與整型不同它包含小數(shù)

1)布爾型(boolean)

布爾型是 PHP 中較為常用的數(shù)據(jù)類型之一,它保存一個(gè)真值(true) 或 假值(false)

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

2)字符串(string)

字符串是連續(xù)的字符序列,由數(shù)字、字母、符號(hào)組成,字符串的每個(gè)字符只占一個(gè)字節(jié)。字符包含以下幾種類型

字符類型名內(nèi)容
數(shù)字類型如:1、2、3等
字母類型如:a、b、c等
特殊類型如:#、$、^、&等
不可見類型如:\n(換行符)、\r(回車)、\t(tab字符)等

不可見字符是比較特殊的字符用于控制字符串格式輸出,在瀏覽器上不可見,只是能看到字符串的輸出結(jié)果。

在 PHP 中有 3 種定義字符串的方式:

a.單引號(hào)(')

$a = 'zZ愛吃菜';

b.雙引號(hào)(")

$b = "zZ愛吃菜";

單引號(hào)與雙引號(hào)的區(qū)別:雙引號(hào)所包含的變量會(huì)自動(dòng)被替換成實(shí)際值,而單引號(hào)包含的變量則按普通類型輸出。例如:

$a = 'hello';
$b = '$a china';
$c = "$a world"; // 個(gè)人建議這樣寫:$c = "{$a} world"; 不容易產(chǎn)生歧義
echo $b;
echo $c;
結(jié)果:
$a china
hello world

c.定界符(<<<)

如果用傳統(tǒng)的輸出方法——按字符串輸出的話,肯定要有大量的轉(zhuǎn)義符來對(duì)字符串中的引號(hào)等特殊字符進(jìn)行轉(zhuǎn)義,以免出現(xiàn)語法錯(cuò)誤。如果是一兩處還可以容忍,但是要是一個(gè)完整的html文本或者是一個(gè)200行的js我想是誰都會(huì)崩潰的。這就是PHP為什么要引入一個(gè)定界符的原因——至少一大部分原因是這樣的。
1.PHP 定界符的作用就是按照原樣,包括換行格式什么的,輸出在其內(nèi)部的東西;
2.PHP 定界符中字符串內(nèi)容不需要轉(zhuǎn)義

// 定義
<<<Eof 
…… 
Eof;

不需要對(duì)付出轉(zhuǎn)義的好處:直接輸出你想要的 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;

注意:使用定界符輸出字符串,結(jié)束標(biāo)識(shí)符必須單獨(dú)另起一行,并且不允許有空格。

3)整型(integer)

整型數(shù)據(jù)類型只能包含整數(shù),在 32 位的操作系統(tǒng)中,有效范圍是: -2147483648(2的31次方) ~ 217483647 (2的31次方-1)。整型可以使用十進(jìn)制、八進(jìn)制和十六進(jìn)制表示,如:八進(jìn)制(數(shù)字前面必須加0)、十六進(jìn)制(數(shù)字前面必須加0x)

$int1 = 1234;
$int2 = 01234;
$int3 = 0x1234;

echo "十進(jìn)制的結(jié)果是:{$int1}<br>";
echo "八進(jìn)制的結(jié)果是:{$int2}<br>";
echo "十六進(jìn)制的結(jié)果是:{$int3}<br>";
結(jié)果
十進(jìn)制的結(jié)果是:1234
八進(jìn)制的結(jié)果是:668
十六進(jìn)制的結(jié)果是:4660

注意:如果給定的數(shù)值超出了 int 型所能表示的最大范圍,將會(huì)被當(dāng)作 float 型處理,這種情況叫做:整型溢出。表達(dá)式最后的運(yùn)算結(jié)果超出 int 范圍,也會(huì)返回 float 型

4)浮點(diǎn)型(float)

浮點(diǎn)型數(shù)據(jù)類型可以用來存儲(chǔ)整數(shù),也可以保存小數(shù)。它提供的精度比整數(shù)大得多。 在32系統(tǒng)中有效范圍: 1.7E-308 ~ 1.7E+308

在 PHP 4.0 之前的版本 浮點(diǎn)型被標(biāo)識(shí)為 double,也叫雙精度浮點(diǎn)數(shù),兩者沒什么區(qū)別

// 定義
$a = 1.036;
$b = 2.035;
$c = 3.48E2; // En代表10*n, E1 代表 * 10, $c = 348

echo $c;
結(jié)果:348

什么是數(shù)組

數(shù)組就是一組數(shù)據(jù)的集合,把一系列數(shù)據(jù)組織起來,形成一個(gè)可操作的整體。

因?yàn)?PHP 是弱數(shù)據(jù)類型的編程語言,所以 PHP 中的數(shù)組變量可以存儲(chǔ)任意多個(gè)、任意類型的數(shù)據(jù),并且可以實(shí)現(xiàn)其他強(qiáng)數(shù)據(jù)類型中的堆、棧、隊(duì)列等數(shù)據(jù)結(jié)構(gòu)的功能。

數(shù)組 array 是一組有序的變量,其中每個(gè)值被稱為一個(gè)元素。每個(gè)元素由一個(gè)特殊的標(biāo)識(shí)符來區(qū)分,這個(gè)標(biāo)識(shí)符稱為鍵(也稱為下標(biāo))。

數(shù)組中的每個(gè)實(shí)體都包含兩項(xiàng),分別是鍵(key)和值(value)。可以通過鍵值來獲取相應(yīng)的數(shù)組元素,這些鍵可以是數(shù)值鍵,也可以是關(guān)聯(lián)鍵。如果說變量是存儲(chǔ)單個(gè)值的容器,那么數(shù)組就是存儲(chǔ)多個(gè)值的容器。

PHP 數(shù)組比其他高級(jí)語言中的數(shù)組更加靈活,不但支持以數(shù)字為鍵名的索引數(shù)組,而且支持以字符串或字符串、數(shù)字混合為鍵名的關(guān)聯(lián)數(shù)組。而在其他高級(jí)語言中,如 Java 或者 C++ 等語言的數(shù)組,只支持?jǐn)?shù)字索引數(shù)組。

PHP 數(shù)組的結(jié)構(gòu)如下圖所示:

php標(biāo)量數(shù)據(jù)和數(shù)組有什么區(qū)別

擴(kuò)展知識(shí):

在 PHP 中,標(biāo)量類型數(shù)據(jù)是值傳遞的,而復(fù)合類型數(shù)據(jù)(對(duì)象和數(shù)組)是引用傳遞的。

但是復(fù)合類型數(shù)據(jù)的引用傳遞和用 & 符號(hào)明確指定的引用傳遞是有區(qū)別的,前者的引用傳遞是對(duì)象引用,而后者是指針引用。

在解釋對(duì)象引用和指針引用之前,先讓咱們 看多個(gè) 例子。

<?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>";
?>

這個(gè)例子的輸出結(jié)果是這樣的:

O:11:"SampleClass":1:{s:5:"value";r:1;}
O:11:"SampleClass":1:{s:5:"value";R:1;}

大家 會(huì)發(fā)覺 ,這里變量 $a 的 value 字段的值被序列化成了 r:1,而 $b 的 value 字段的值被序列化成了 R:1。

但是對(duì)象引用和指針引用到底有什么區(qū)別呢?

看下面這個(gè)例子:

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>";

運(yùn)行結(jié)果也許出乎你的預(yù)料:

object(SampleClass)#1 (1) {
   ["value"]=>
   int(1)
}
int(1)

改動(dòng) $a->value 的值僅僅是改動(dòng) 了 $a->value 的值,而改動(dòng) $b->value 的值卻改動(dòng) 了 $b 本身,這就是對(duì)象引用和指針引用的區(qū)別。

以上就是關(guān)于“php標(biāo)量數(shù)據(jù)和數(shù)組有什么區(qū)別”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI