php
支持八种原始的数据类型
4种标量类型
boolean
integer
float(double)
string
2种复合类型
array
object
2种特殊类型
resource
NULL
类型函数
bool settype(mixed $var, string $type):将$var强制转换成type类型
string gettype(mixed $var):返回变量$var的类型
bool is_type($var):判断变量是否为该类型
输出函数
echo():输出一个或多个字符串
print():输出一个或多个字符串(效率比echo()慢)
printf():同C语言,格式化输出
print_r():常用与输出数组
var_dump($var):输出某个表达式的值和类型
数据类型介绍:
boolean:布尔类型
TURE
和FALSE
,不区分大小写。
以下值被认为是FALSE
:
- 布尔值FALSE本身
- 整型值0
(零)
- 浮点型0.0
(零)
- 空字符串,以及字符串"0"
- 不包含任何元素的数组。
- 特殊类型NULL
(包括尚未赋值的变量)
—所有其他值都被认为是TRUE
Integer:整型
可以十进制,十六进制(0x
),八进制(0
),二进制(0b
),如果一个数超出了integer
的范围,将会被解释成float
,同样如果执行的运算结果超出了integer
范围,也会返回float
。
//PHP中没有整除运算符,1/2会产生float 0.5。
echo 1/2; //输出:0.5
echo "<br/>";
echo (integer)1/2; //输出:0,integer强制转换为整型
echo "<br/>";
echo round(1/2); //输出:1,round()四舍五入
echo "<br/>";
echo (integer)0.8; //输出:0,当从浮点型转换成整数时,将向下取整数(去尾法)
Float
:浮点型
要测试两个float
是否相等,不要直接比较两个float
数是否相等,可以使用一个仅比该数值大一丁点的最小误差数。
String
:字符串
一个string
就是由一系列的字符组成,每个字符等同于一个字节。
string可以用4种方式表达:
//单引号:单引号内的字符串中的变量和特殊字符的转义序列不会被替换
//$a和'\n'在控制台原样输出
$a = 'hello, world';
echo '$a\n';
echo "\n";
//双引用会对变量和转义字符进行替换
//$a和'\n'在控制泰会被解析后输出
$a = 'hello, world';
echo "{$a}你好吗\n";
//heredoc结构:相当于双引号,能解析变量和转义符
//<<<"符号" 符号; 或者 <<<符号 符号;
$str1 = <<<EOF
第一行
第二行
第三行
第四行
{$a}
EOF;
echo $str1;
$str2 = <<<"EOF"
第一行
第二行
第三行
第四行
{$a}
EOF;
echo $str2;
//nowdoc结构:相当于单引号,不能解析变量和转义符
//<<<'符号' 符号;
$str3 = <<<'EOF'
第一行
第二行
第三行
第四行
{$a}
EOF;
echo $str3;
Array
:数组
php
中的数组是一个有序映射,映射就是一种把values
关联到keys
的类型,array
可以接受任意数量用逗号分割的健值对。
key
:可以是一个整型integer
或字符串string
。(注:php
可以同时包含integer
和string
类型的键名)
value
:可以是任意类型的值。
- 包含有合法整型值的字符串会被转换为整型(如
"8"
会被转换为8
,但是"08"
不能转换为8
) - 浮点数会被转换为整型,意味着小数部分会被舍去
- 布尔值会被转换为整型
NULL
会被转换为空字符串,即""
- 数组和对应不能被用为键名
//数组定义:
$arr1 = array(
"key1" => "value1",
"key2" => "value2"
);
var_dump($arr1); //echo不能直接对数组进行输出
如果数组中定义了多个单元都用了同一个键名,则只会使用最后一个,之前其他的都会被覆盖。
$arr2 = array(
1 => "a",
2.2 => "b",
true => "c" //会对之前key为1的进行覆盖
);
如果对给出的值没有指定键名,则取当前最大的整数索引值,则新的键名将是该值+1
,如果指定的键名已经有值,则该值会被覆盖,所以key
为可选项,如果未指定,php
将自动使用之前用过的最大的integer
键名+1作为新键名,最小值为0
,如果当前还没有整数索引,键名为0
$arr2[] = 4;
var_dump($arr2);
$arr3 = array(
"a", //键值为0
"b", //键值为1
6 => "c",
"d" //键值为7
);
访问数组,可以用array[key]
语法访问,也可以使用array{key}
$arr4 = array(
"key1" => "value1",
"key2" => "value2"
);
var_dump($arr4["key1"]);
echo "<br/>";
var_dump($arr4{"key1"});
//数组的创建
$arr5 = array(5 =>1, 4 => 2);
var_dump($arr5);
echo "<br/>";
//添加一个新的key-value对
$arr5[] = 3;
var_dump($arr5);
echo "<br/>";
//如果x存在,则覆盖value,如果不存在,添加
$arr5["x"] = 5;
var_dump($arr5);
echo "<br/>";
//移除该键值对
unset($arr5[4]);
var_dump($arr5);
echo "<br/>";
//移除整个数组
unset($arr5);
var_dump($arr5);
echo "<br/>";
//注意:这里所使用的最大整数键名不一定就是当前数组中,它只要在上次数组重新生成索引后曾经存在过就行了。
$arr6 = array(1, 2, 3, 4, 5, 6);
print_r($arr6);
echo "<br/>";
foreach ($arr6 as $i => $value){ //遍历数组,移除所有元素
//echo $value;
//echo "<br/>";
unset($arr6[$i]);
}
print_r($arr6); //此时数组为空
echo "<br/>";
$arr6[] = 9; //此时添加一个key-value(注意键名为6,不为0)
print_r($arr6);
echo "<br/>";
$arr6 = array_values($arr6); //重新索引
$arr6[] = 10; //此时key为1,上一个key为0
print_r($arr6);
echo "<br/>";
unset()函数允许删除数组中的某个键值对,但不会重新索引排序,如果需要删除后重建索引,可以用array_value()函数
foreach as 控制结构专门用于数组的,它提供了一个简单的方法来遍历数组
//对于任意integer,float,string,boolean类型,如果将一个值转换为只有一个元素的数组(下标为0)
$var = "你好";
var_dump(array($var));
Object
:对象,要创建一个新的对象object
,使用new
语句实例化一个类。
class Foo
{
function do_foo()
{
echo "doing foo.."."<br/>";
}
}
$bar = new Foo();
$bar -> do_foo();
Resource
资源类型:是一种特殊变量,保存了到外部资源的一个引用。
NULL
:表示一个变量没有值。
is_null()
:判断一个变量是否为NULL
。
unset()
:移除。
一个变量被认为NULL
三种情况:
- 被赋值为
NULL
- 尚未被赋值
- 被unset()
mixed
:说明一个参数可以接受多种不同的(但不一定是所有的)类型。
注:php
在变量定义中不需要(不支持)明确的类型定义,变量类型是根据该变量的上下文所决定的。也就是说:
- 如果把一个
string
类型的值赋值给变量$var
,则$var
变成string
类型; - 如果又把一个
integer
赋给$var
,$var
变成integer
类型;
强制转换函数:
(integer)$var;
(boolean)$var;
(float)$var;
(string)$var;
(array)$var;
(object)$var;