變量的數據類型分爲強數據類型和弱數據類型。 若是一個變量的類型取決於存放值的類型,這種語言稱爲弱數據類型語言。php
若是聲明變量是A類型,就不能存放B類型的數據,這種語言稱爲強數據類型語言。 PHP和js都是弱數據類型。mysql
類型 | 描述 |
---|---|
整型integer | 一個沒有小數的數字。 echo PHP_INT_MAX 整型最大值 |
浮點數float | 存放整數和小數 |
布爾型boolean | true/false |
字符串string | 雙單引號字符串 |
浮點數詳解: 因爲浮點數轉成二進制是乘2正向去整,可能會一直循環下去。全部浮點數保存的值是近似值。算法
不能用浮點數數作比較sql
var_dump(0.9 == (1-0.1)); //bool(true)
var_dump(0.1==(1-0.9)); //bool(false)
複製代碼
若是要比較浮點數經過數組
*bccomp(值1,值2,比較的小數位數)*函數去比較,bash
若是兩個數相等就返回0,值1>值2返回1,不然返回-1數據結構
echo bccomp(0.1,(1-0.9),5),'<br>'; //0
echo bccomp(1.123,1.124,2),'<br>'; //0
echo bccomp(1.123,1.124,3),'<br>'; //-1
複製代碼
浮點數的範圍比整型要大, 理論上,浮點數的最大值是:1.8E+308, 浮點數的精度有效位數是14位函數
布爾型詳解: 打印布爾型使用 var_dump()ui
字符串詳解:編碼
a.1.單引號字符串是真正的字符串,雙引號字符串要將變量進行替換 (單引號字符串不須要運算,執行效率高一點)
<?php
$name='李白';
echo '名字是$name'; //名字是$name
echo "名字是$name"; //名字是李白
?>
複製代碼
a.2.大括號和$符能夠緊挨着結合使用
<?php
$name='李白';
echo '$name是名字<br>'; //$name是名字 換行了
echo "$name是名字<br>"; //報錯雙引號會認爲$後面全是變量名
echo "$name 是名字<br>"; //李白 是名字 換行了
echo "($name)是名字<br>"; //(李白)是名字 換行了
echo "{$name}是名字<br>"; //李白是名字 換行了
echo "${name}是名字<br>"; //李白是名字 換行了
?>
複製代碼
a.3.轉義字符(\) 將具備特殊含義的字符轉成普通字符
轉義字符後面若是跟的是特殊字符,將特殊字符轉成普通字符。
若是轉義字符後面跟的是普通字符,轉義字符不起做用,就是一個普通字符
echo "呵呵:\"哈哈\"",'<br>'; //呵呵:"哈哈"
echo "文件在c:\\"; //文件在c:\
echo '\1\2\3\4\5'; //\1\2\3\4\5
複製代碼
可是,要注意轉義字符和r、n、t的組合,\r組合表示回車,\n表示換行,\t表示製表符。
a.4 ASC|| 計算機內部使用二進制計算。鍵盤上的每一個字符都有一個編碼和他對應,這個編碼就是ASC||碼。
ASC||碼用7位的二進制數來表示,能夠表示2^7次方個字符(128個)。
echo ord('A'),'<br>'; //65 將字符轉成十進制ASC||碼
echo chr(65),'<br>'; //A 將十進制的數字轉成字符。
複製代碼
""能夠轉義ASC碼
echo "\101",'<br>'; //A 8進制ASC碼轉成字符
echo "\x41",'<br>'; //A 16進制ASC碼轉成字符
複製代碼
a.5 字符串定界符
echo <<<str //開始定界符
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>PHP</title>
</head>
str; //結束定界符
複製代碼
<?php
$name = '哈哈';
echo <<<str
呵呵$name
str;
//輸出 呵呵哈哈
<?php
$name = '哈哈';
echo <<<'str'
呵呵$name
str;
//輸出 呵呵$name
複製代碼
類型 | 描述 |
---|---|
數組array | ['llj','llk'] |
對象object | {'name':'llj'} |
b.1. 數組詳細
定義數組:
$stu = array('a','b','c','d','e');
$stu2[] = 'tom';
$stu2[] = 'berry';
複製代碼
索引數組:經過下標索引
<?php
$stu = array('a','b','c','d','e');
echo $stu[0],'<br>'; //a
echo $stu[1],'<br>';
?>
複製代碼
關聯數組:元素的值與字符串有某種關聯
<?php
$stu = array('name'=>'李白','sex'=>'男','age'=>'21');
echo $stu['name'],'<br>';
echo $stu['sex'],'<br>';
echo $stu['age'],'<br>';
?>
複製代碼
鍵值對:數組的下標能夠稱爲「鍵」,下標和對應的值稱爲「鍵值對」
數組下標能夠修改 1=>'a'
extract() 從數組中的鍵值對轉成廣泛變量
$stu=array('id'=>1,'name'=>'tom');
extract($stu);
echo $id,'<br>',$name;
// 輸出: 1 tom
複製代碼
a 按照元素的鍵值關係分爲:
b 按照數組的結構分
類型 | 描述 |
---|---|
資源 | resource |
無 | null |
資源:
<?php
$list = mysql_connect('localhost','root','adminllj');
var_dump($list); //resource(3) of type (mysql link)
echo '<br>';
$fp = fopen('./.htaccess','r');
var_dump($fp); //resource(5) of type (stream)
?>
複製代碼
NULL:
function fun() {}
var_dump(fun());
複製代碼
計算機中支持 十進制、二進制、八進制、十六進制 (逢2、8、10、十六進1) 十六進制: 0-9,A,B,C,D,E,F (F=15)
例題1:十進制123,寫出表達式(斜體表示次方) 123 = 1X100 + 2X10 + 3 123 = 1X102+2X101+3X100
例題2:八進制123,轉成十進制 123 = 1X82+2X81+3X80
例題3:十六進制FF,轉成十進制 FF = 15X161+15X160 = 255
例題4:二進制1001轉成十進制 1001 = 23+20 = 9
進制 | 函數 | 結果 ---|--- 十進制轉成二進制 | decbin(9) | 1001 二進制轉成十進制 | bindec(1001) | 9 十進制轉成八進制 | decoct(10) | 12 十進制轉成十六進制 | dechex(10) | a
echo decbin(9),'<br>'; //1001
echo bindec(1001),'<br>'; //9
echo decoct(10),'<br>'; //12
echo dechex(10),'<br>'; //a
複製代碼
數據類型是數據在內存中存儲的結構,和創建在該數據結構上的操做算法的集合。
這就意味着不一樣的數據類型運算操做可能不同。不一樣類型的數據在運算過程當中要注意類型的轉換。
運算過程當中須要的數據類型和提供的數據類型不一致。
<?php
$num = 10;
if($num){
echo '把數字型轉換成布爾型';
}
echo '<br>';
echo '10aa' + '20bb'; //30 把字符串轉成數字
echo '<br>';
$num0 = 'abc';
$num1 = 0;
if($num0 == $num1){
echo '把$num0轉換成了數字0';
}
?>
複製代碼
語法:(數據類型)數據
示例:
<?php
$num = 10;
var_dump((bool)$num); //bool(true) 轉換成布爾
echo '<br>';
$num0 = 12.5;
echo (int)$num0; //12 浮點數轉成整數
echo '<br>';
?>
複製代碼
//字符串和bool的轉換規律
var_dump((bool)'abcd'); //true
var_dump((bool)''); //false
var_dump((bool)'0'); //false
var_dump((bool)'0.0'); //true
var_dump((bool)'00'); //true
var_dump((bool)'false'); //true
var_dump((bool)'null'); //true
---
//數字和bool的轉換規律
var_dump((bool)1); //true
var_dump((bool)0); //false
var_dump((bool)-10); //true
var_dump((bool)1.1); //true
var_dump((bool)0.0); //false
var_dump((bool)-1.1); //true
---
//數組和bool的轉換規律
var_dump((bool)array()); //false
var_dump((bool)array(1)); //true
var_dump((bool)array(false));//true
---
//數組和null的轉換規律
var_dump((bool)null); //false
複製代碼