php数据类型

来源:互联网 发布:电脑音乐剪辑软件 编辑:程序博客网 时间:2024/04/30 23:31

php支持8中原始的数据类型

4种标量类型:

booleanintegerfloat(doublestring

2种复合类型:

arrayobject

2种特殊类型:

resourceNULL



类型函数

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值:TUREFALSE,不区分大小写。

以下值被认为是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.5echo "<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种方式表达:

  • 单引号:单引号内的字符串中的变量和特殊字符的转义序列不会被替换。
  • 双引号:会对变量和转义字符进行替换
  • heredoc结构
  • nowdoc结构

Array:数组
php中的数组是一个有序映射,映射就是一种把values关联到keys的类型,array可以接受任意数量用逗号分割的健值对。

key:可以是一个整型integer或字符串string。(注:php可以同时包含integerstring类型的键名)
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为0print_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;