布林型
範圍:
true;
false;
轉換:
為false的情況,其他情況一律為true
var_dump(boolval(0)); //bool(false)
var_dump(boolval(-0)); //bool(false)
var_dump(boolval(0.0)); //bool(false)
var_dump(boolval(-0.0)); //bool(false)
var_dump(boolval('')); //bool(false)
var_dump(boolval('0')); //bool(false)
var_dump(boolval(array())); //bool(false)
var_dump(boolval(NULL)); //bool(false)
var_dump(boolval($var)); //bool(false) 未賦值的變數
//從空標記生成的 [SimpleXML](https://www.php.net/manual/zh/ref.simplexml.php) 物件
整型
範圍:
//64位有符號的整型範圍,超出範圍轉化成浮點型
echo PHP_INT_MAX; //9223372036854775807
echo PHP_INT_MIN; //-9223372036854775808
轉化:
var_dump(intval(true)); //int(1)
var_dump(intval(false)); //int(0)
var_dump(intval(3.14)); //int(3) 向下取整
var_dump(intval(NULL)); //int(0)
var_dump(intval('3.14e2')); //int(314)
var_dump(intval('1.23')); //int(1)
var_dump(intval('123abc')); //int(123)
var_dump(intval('1a2b3c')); //int(1)
var_dump(intval('a1b2c3')); //int(0)
var_dump(intval(array(3))); //int(1)
var_dump(intval(array())); //int(0)
進位制:
var_dump(0b10); //int(2) 二進位制
var_dump(010); //int(8) 八進位制
var_dump(10); //int(10) 十進位制
var_dump(0x10); //int(16) 十六進位制
浮點型
範圍:通常最大值是 1.8e308 並具有 14 位十進位制數字的精度
轉化:
var_dump(floatval(true)); //float(1)
var_dump(floatval(false)); //float(0)
var_dump(floatval(NULL)); //float(0)
var_dump(floatval(123)); //float(123)
var_dump(floatval('3.14e2')); //float(314)
var_dump(floatval('1.23')); //float(1)
var_dump(floatval('123abc')); //float(123)
var_dump(floatval('1a2b3c')); //float(1)
var_dump(floatval('a1b2c3')); //float(0)
var_dump(floatval(array(3))); //float(1)
var_dump(floatval(array())); //float(0)
比較:
可以使用round()
函式做處理後再比較
$a = 0.8;
$b = 0.1 + 0.7;
var_dump($a); //float(0.8)
var_dump($b); //float(0.8)
var_dump($a == $b); //bool(false)
var_dump(round($a,2) == round($b,2)); //bool(true)
字元型
範圍:
$a = '單引號';
$b = "雙引號";
$c = <<<EOT
hereDOC的語法結構(雙引號包含的內容)
內容 。。。
內容 。。。
EOT;
$d = <<<'EOT'
nowdoc的語法結構(單引號包含的內容)
內容 。。。
內容 。。。
EOT;
轉化:
var_dump(strval(true)); //string(1) "1"
var_dump(strval(false)); //string(0) ""
var_dump(strval(NULL)); //string(0) ""
var_dump(strval(1)); //string(1) "1"
var_dump(strval(3.14)); //string(4) "3.14"
var_dump(strval(array(1,2,3))); //string(5) "Array"
轉義:
$a = 'hello:\'kitty\'';
echo $a; //hello:'kitty'
$b = "hello:\"kitty\"";
echo $b; //hello:"kitty"
包含:
$a = 'hello:"kitty"';
echo $a; //hello:"kitty"
$b = "hello:'kitty'";
echo $b; //hello:'kitty'
下標:
$str = 'abcdefg';
echo $str[0]; //a
陣列
範圍:key 可以是 integer 或者 string(其他會強制轉換成這兩種型別),value 可以是任意型別。
覆蓋:
$arr = array('a' => 1,'b' => 2,'a' => 3);
print_r($arr); //Array([a] => 3[b] => 2)
索引:
$arr = array(
'a',
5 => 'b',
2 => 'c',
'd' //沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一,按照正序依次增長
);
print_r($arr); //Array ( [0] => a [5] => b [2] => c [6] => d )
物件
new:
class test{}
$obj = new test(); //通過new一個類來生成一個物件
var_dump($obj); //object(test)#1 (0) { }
轉化:
$obj1 = (object)'hello';
var_dump($obj1); //object(stdClass)#1 (1) { ["scalar"]=> string(5) "hello" }
var_dump($obj1->scalar); //string(5) "hello"
$obj2 = (object)110;
var_dump($obj2); //object(stdClass)#2 (1) { ["scalar"]=> int(110) }
var_dump($obj2->scalar); //int(110)
$obj3 = (object)array('hello',110,'name' => 'jack');
var_dump($obj3); //object(stdClass)#3 (3) { ["0"]=> string(5) "hello" ["1"]=> int(110) ["name"]=> string(4) "jack" }
var_dump($obj3->{'0'}); //string(5) "hello"
var_dump($obj3->{'1'}); //int(110)
var_dump($obj3->name); //string(4) "jack"
$obj4 = (object)true;
var_dump($obj4); //object(stdClass)#4 (1) { ["scalar"]=> bool(true) }
var_dump($obj4->scalar); //bool(true)
$obj5 = (object)false;
var_dump($obj5); //object(stdClass)#4 (1) { ["scalar"]=> bool(false) }
var_dump($obj5->scalar); //bool(false)
$obj6 = (object)3.14;
var_dump($obj6); //object(stdClass)#6 (1) { ["scalar"]=> float(3.14) }
var_dump($obj6->scalar); //float(3.14)
資源
概念:資源 resource 是一種特殊變數,儲存了到外部資源的一個引用。資源是通過專門的函式來建立和使用的。
$fp = fopen('error.txt','w');
var_dump($fp); //resource(3) of type (stream)
fclose($fp);
NULL
概念:特殊的 null 值表示一個變數沒有值。NULL 型別唯一可能的值就是 null。
$a = NULL;
$b;
$c = 1; unset($c);
var_dump($a); //NULL 變數被賦值為NULL的時候
var_dump($b); //NULL 變數沒有被賦值的時候
var_dump($c); //NULL 變數被unset的時候
Callable(偽型別)
概念:自定義的回撥函式
function myFunc(){
echo '我的自定義函式';
}
call_user_func('myFunc'); //我的自定義函式
本作品採用《CC 協議》,轉載必須註明作者和本文連結