最大區別是:一個標量只能存放一個資料,而陣列可以存放多個資料;且標量型別是值傳遞,而陣列是參照傳遞。在PHP中,標量資料有四種型別:布林型、字串、整型、浮點型,它們一次只能存一個值;而陣列是一組資料的集合,可儲存任意多個、任意型別的資料。
本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦
php標量資料和陣列的區別
最大區別:一個標量只能存放一個資料,而陣列可以存放多個資料。
其他區別:標量型別是值傳遞,而陣列是參照傳遞。
標量資料型別是資料結構最基礎的單元,只能儲存一個資料。在 PHP 中的標量資料型別分為四種:
型別 | 功能 |
---|---|
boolean(布林型) | 最簡單的資料型別,只有兩個值:true(真) / false(假) |
string(字串) | 字串是連續的字元序列 |
integer(整型) | 整型資料型別包含所有的整數,其可以是整數也可以是負數 |
float(浮點型) | 浮點型資料型別也是用來儲存數位,與整型不同它包含小數 |
1)布林型(boolean)
布林型是 PHP 中較為常用的資料型別之一,它儲存一個真值(true) 或 假值(false)
// 程式碼: $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.定界符(<<<)
如果用傳統的輸出方法——按字串輸出的話,肯定要有大量的跳脫符來對字串中的引號等特殊字元進行跳脫,以免出現語法錯誤。如果是一兩處還可以容忍,但是要是一個完整的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 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標量資料和陣列的最大區別是什麼的詳細內容,更多請關注TW511.COM其它相關文章!