PHP開發基礎教程之資料類型LOGIN

PHP開發基礎教程之資料類型

概括:

PHP 的資料型別有8種,分別為:String(字串), Integer(整數型), Float(浮點型), Boolean(布爾型), Array(陣列), Object(物件), NULL(空值), resource(資源)。以下逐一介紹:


一、PHP 字串

#字串就是一段字符,更通俗的來講就是一段話,這段話可以很長,也可以很短。

1.在PHP裡面有三種宣告字串的方式

  • #用單引號宣告

#用英文半角狀態下的單引號來把字串包圍起來

<?php
//声明字符串变量$str
$str= 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言';
//输出字符串
echo $str;
?>
  • #用雙引號宣告

<?php
//声明字符串变量$str
$str= “PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言”;
//输出字符串
echo $str;
?>
  • #用字界符宣告(需要輸入非常大段的字串時使用)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$str = <<<DJ
PHP 是
一种创建动态交互<br/>
性站点的强有力的服务器端
    <i>脚本语言</i>
    我想说:<h1>PHP简介</h1>
DJ;
echo $str;
?>
</body>
</html>

2.雙引號和單引號有什麼區別

  •  雙引號解析變量,但是單引號不解析變數。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$name="小明";
$age="24";
//放入字符串中
$str1="我叫$name ,今年$age 岁,很高兴认识大家";
$str2='我叫$name ,今年$age 岁,很高兴认识大家';
//输出字符串
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>

透過上面可以得出結論:雙引號執行變量,而單引號不執行變量

註:雙引號需要解析變量,因此雙引號的效率沒有單引號高

  •  在雙引號裡面插入變量,變量後面如果有英文或中文字符,它會把這個字符和變量拼接起來,視為一整個變數。一定要在變數後面接上特殊字符,例如空格等分開。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$a="php.com";
$str1="$a欢迎您";
$str2="$a 欢迎您";
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>

從報錯可以看出,第一個把「a歡迎您」當成了一個變量,第二個正常輸出。

  •  如果在雙引號裡面插變數的時候,後面不想有空格,可以拿大括號將變數包起來。

稍微改動下上面的例子

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$a="php.com";
$str1="$a 欢迎您";
$str2="{$a}欢迎您";
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>
  • # 雙引號解析轉義字符,單引號不解析轉義字符。但,單引號能解析\' 和\

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明字符串
$str1 = "改变世界之前\n请先\t改变你自己";
$str2 = '改变世界之前\n请先\t改变你自己';
echo $str1;
echo "<hr/>";
echo $str2;
?>
</body>
</html>

註:關於“單引號能解析\' 和\”,大家殼子自己動手嘗試著去做下

  • 單引號效率高於雙引號,盡可能使用單引號

  • 雙號和單引號可以互插! ! !雙引號當中插入單引號,單引號當中插入變量,這個變數會被解析。

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$a='黄河';
$str="白日依山尽,'$a'入海流";
echo $str;
?>
</body>
</html>

註:大家可以嘗試下雙引號裡面套雙引號會出現什麼狀況

  • 神奇的字串拼接膠水-(.)點,用來拼接字串。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$name="小明";
$age="24";
//放入字符串中
$str1="我叫$name ,今年$age 岁,很高兴认识大家";
$str2='我叫$name ,今年$age 岁,很高兴认识大家';
//输出字符串
echo $str1;
echo "<br/>";
echo $str2;
?>
</body>
</html>

這是之前的一個例子,前面提到雙引號能夠解析變量,但是效率沒有單引號高,我現在想既能夠解析變量,又效率高,那就只有依靠(.)來幫助我們了

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$name="小明";
$age="24";
//放入字符串中
$str='我叫'.$name.' ,今年'.$age.' 岁,很高兴认识大家';
//输出字符串
echo $str;
?>
</body>
</html>
  • (.)點也可以用來連接多個字串

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量
$str1 = '白日依山尽<br/>';
$str2 = '黄河入海流<br/>';
$str3 = '欲穷千里目<br/>';
$str4 = '更上一层楼<br/>';
echo $str1.$str2.$str3.$str4;
?>
</body>
</html>
  • 我們將定界符宣告字串視為雙引號一樣的函數來看待。

實例:

<?php
$a = '宣布对用户提现收费';
$b = '支付行业巨头的收费行动';
$str = <<<DJ
   支付宝
            $a
        这也是\t微信在年初宣布提现收费之后
        又一
            '$b'
        很<br />
       多人\n质疑
    <i>互联网公司</i>
    所提倡的免费<b>商业模式</b>难道走到了尽头
DJ;
echo $str;
?>

大家可以執行發現$,$,\t\n都可以執行,雙引號單引號都能顯示。這就是定界符的特點。

3.關於字串的兩個實用的函數

strlen(字串)傳回字串的長度(字元數)

strpos (被尋找的字串,尋找的字元或文字)如果在字串中找到匹配,函數會傳回第一個匹配的字元位置。如果未找到匹配,則傳回 FALSE。

實例:

<?php
//输出一个字符串的长度
echo strlen("Hello world");
echo "<br/>";
//在字符串 "Hello world!" 中查找文本 "world",字符串中第一个字符的位置是 0,而不是 1。
echo strpos("Hello world","world")
?>

附註:字串中首字元的位置是0 而不是1

完整字串函數,請查看PHP參考手冊


二、PHP 整數

整數就是一個沒有小數的數字。

整數法則:

  •  整數必須至少有一個數字(0-9)

  •  整數不能包含逗號或空格

  •  整數是沒有小數點的

  • # 整數可以是正數或負數

  •  整數可以用三種格式來指定:十進制, 十六進制( 以0x 為前綴)或八進制(前綴為0)。

在以下實例中我們將測試不同的數字。 PHP var_dump() 函數傳回變數的資料型別和值:

附註:var_dump() 是一個函數。向括號()中間插入變數。這個函數,會印出來資料型,也會對應到變數的長度和值

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//定义变量
$x = 5985;
$y = -345; // 负数 
$z = 0x8C; // 十六进制数
$w = 047; // 八进制数
//输出变量
var_dump($x);
echo "<br>";
var_dump($y);
echo "<br>"; 
var_dump($z);
echo "<br>";
var_dump($w);
?>
</body>
</html>

三、浮點型

所謂浮點型,既為我們數學裡面的小數。

下面經過實例,測試不同的數字

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php 
//定义变量
$x = 10.365;
$y = 2.4e3;
$z = 8E-5;
//输出变量
var_dump($x);
echo "<br>"; 
var_dump($y);
echo "<br>"; 
var_dump($z);
?>
</body>
</html>

四、布林型

所謂布爾,可以理解為事物的兩面性,有真就有假,有對就有錯,當前的計算機系統使用的基本上是二進制系統,即為0和1的組合

布爾型只有兩個值: TRUE 或FALSE

$x=true;
$y=false;

常用於條件判斷,在以後的學習中,你會經常和他打交道。

註:true和false外面不要加引號

類型轉換:

一下情況會轉換成false

  • ##一下情況會轉換成false

  • 布林值=false

  •  整數=0

  • # 浮點數=0.0

  • 空數組

  •  沒有變數成語的物件

    ########## 變數值為空###

其餘情況下,基本上會轉換為true


#五、陣列

上面定義的變數只能儲存一個值,如果想要儲存多個值的話,則就要用到數組了

在以下實例中建立了一個數組, 然後使用PHP var_dump() 函數傳回數組的資料類型和值:

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php 
//定义变量
$fruits=array("苹果","香蕉","梨子");
//输出变量
var_dump($fruits);
echo gettype($fruits);
?>
</body>
</html>

大家先對數組有個了解,掌握基本聲明一個數組,判斷是否是數組類型,其他的在後面有專門一章來討論數組。


六、物件

  • #物件資料型別也可以用來儲存資料。

  •  在 PHP 中,物件必須宣告。

  • 首先,你必須使用class關鍵字宣告類別物件。類別是可以包含屬性和方法的結構。

  •  接著我們在類別中定義資料類型,然後在實例化的類別中使用資料類型:

來看個實例:

<?php
//定义一个Car 类
class Car
{
  var $color;
  function Car($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
//实例化Car类
$car = new Car;
//输出查看类型
var_dump($car);
?>

物件這個暫時大家不用深究,以後會慢慢了解,暫時只要看到這個object知道是物件就可以了。


七、空值

NULL 值表示變數沒有值。 NULL 是資料類型為 NULL 的值。空(null)不是false,不是0,也不是空格。

1.null 產生的三種情況:

  • #透過變數賦值明確指定為變數的值為NULL

  • 一個變數沒有給任何值

  •  使用函數unset()將變數銷毀掉

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//声明变量为null
$n = null;
var_dump($n);
//var_dump显示输出变量$meiyou,看看结果是什么?
var_dump($a);
//声明一个变量$b的值为字符串的手机
$b = '手机';
//unset销毁掉一个变量
unset($b);
var_dump($b);
?>
</body>
</html>

2.empty和isset 兩個函數的區別

  • empty()函數

empty( )可以向括號中間傳入一個變數。這個變數的值如果為false或是null的話,回傳true。

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
$a=null;
if(empty($a)){
	echo '这个变量是空';
}else{
	echo '这个变量不是空';
}
?>
</body>
</html>

當$a=null 時empty傳回true。

  •  isset()函數

isset()可以向括號中間傳入一個或多個變量,變數與變數間用逗號分開。只要有一個變數為null,則傳回false。否則,則傳回true。

實例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php.cn</title>
</head>
<body>
<?php
//传入一个变量
$a=false;
$b=isset($a);
var_dump($b);
echo "<hr/>";
//传入多个变量
$b=10;
$c=false;
$d=null;
$e=isset($b,$c,$d);
var_dump($e);
echo PHP_VERSION;
echo __LINE__;
?>
</body>
</html>

註:unset()這個函數的函數是毀掉變數。 unset(變數)括號中間插入想要毀掉的變數名,這個變數就會被毀掉,大家可以自己動手銷毀,然會用var_dump()函數說出來看看效果。


八、資源類型

#資源類型很多初學者覺得比較難以理解。因為資源類型印出來只能夠看到一個英文的resource。其他的什麼在電腦上都不能顯示出來,而他有客觀存在。

其實,資源型別很簡單。我們針對詞來進行說明。

電腦裡面的資源是指:

  •  word,excel等檔案

  •  有人收藏的美女圖片和我們的自拍照等圖片

  • # 音樂

  •  某些人愛看的AVI小電影

  •  開啟的網頁


  • #... ...等等

我們開啟一個圖片,用PHP來操作它,我們就是操作的一個資源。
我們打開的資料庫連接,我們需要連接資料庫,資料庫就是我們操作的資源。
包括網路連接,連接後發送郵件,我們也可以認為是一個資源。

註:理解資源就提操作我們可見和不可見的檔案、網路和資料。我們在以後的章節中,操作圖片和網路的時候大家會有更深刻的印象。


九、檢視與判斷資料型別

1.檢視資料型別

在以後的學習和工作中,進行需要知道一個資料的資料類型,透過以下兩個函數可以知道

  • gettype(傳入一個變數)能夠獲得變數的型別

  •  var_dump(傳入一個變數) 輸出變型別與值

## 範例:

<?php
//声明变量,输出其类型
$str = 9.99;
$type = gettype($str);
echo $type;
echo "<br/>";
$str1 = true;
$type1 = gettype($str1);
echo $type1;
echo "<br/>";
//声明变量,输出其类型和值
$str2 = "霸都";
var_dump($str2);
echo "<br/>";
$arr = array(1,23,4);
var_dump($arr);
?>

註:大家可以再嘗試輸出下其他幾種型別

2.判斷資料型別

我們使用is_* 系列函數。 is_types這一系列的函數,來判斷某個東西是不是某個類型。如果是這個類型回傳真,不是這個類型回傳假。

  •  is_int 是否為整數

  •  is_bool 是否為布林

  • ## is_float 是否為浮點
  •  is_string 是否為字串
  •  is_array 是否為陣列
  •  is_object 是否是物件
  •  is_null 是否為空
  •  is_resource 是否為資源
  •  is_scalar 是否為標量
  •  is_numeric 是否為數值型別
  •  is_callable 是函數
#
<?php
$fo = false;
var_dump(is_bool($fo));
var_dump(is_null($fo));
$str='18.8';
var_dump(is_string($str));
?>

註:大家可以嘗試其他幾個,看看輸出結果

下一節
<?php //声明字符串变量$str $str= 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言'; //输出字符串 echo $str; ?>
章節課件