PHP
数据类型
PHP
支持八种原始的数据类型:
布尔型
/* * boolean:TRUE FALSE * 以下值被认为是FALSE: * 布尔值FALSE本身 * 整型值0(零) * 浮点型0.0(零) * 空字符串,以及字符串"0" * 不包含任何元素的数组 * 特殊类型NULL(包括尚未赋值的变量) * ---所有其他值都被认为是TRUE */ $foo = true; echo "foo的值是:$foo"."\n"; if ($foo){ echo "foo是真值"."\n"; } else{ echo "foo是假值"."\n"; }
整型
/* * Integer 整型,可以十进制、十六进制(0x)、八进制(0)、二进制(0b) * php不支持无符号整数,即php中的整数都是有符号的,最大的整数为PHP_INT_MAX * 注:如果给定一个数超出了integer的范围,将会被解释成float,同样如果执行的运算结果超出了integer范围,也会返回float */ //PHP中没有整除运算符,1/2会产生float 0.5。 echo 1/2; echo "\n"; echo (integer)(1/2); //integer强制转换为整型(去尾法) echo "\n"; echo round(1/2); //round()四舍五入 echo "\n"; //当从浮点型转换成整数时,将向下取整数(去尾法) echo (integer)0.8; //输出:0 echo "\n";
浮点型
/* * Float:浮点数 * 永远不要直接比较两个浮点数是否相等 * 要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。 */ $a = 1.234; $b = 1.235; echo "\n";
字符串
/* * string:字符串 * 一个string就是由一系列的字符组成,每个字符等同与一个字节。 * string可以用4中方式表达: * 单引号:单引号内的字符串中的变量和特殊字符的转义序列不会被替换。 * 双引号:会对变量和转义字符进行替换。 * heredoc结构: * nowdoc结构 * * 字符串细节: * 一个字符串就是由一系列的字符组成,因此: * 一个字母 占一个字节 * 一个数字 占一个字节 * 汉字(gbk/gb2312) 占两个字节 * 汉字(utf-8) 占三个字节 */ //heredoc格式 /* * 使用注意: * 1. <<<固定 AAA名称可以变化,一般来说全部大写 * 2. <<<标识符 后面不能带任何内容,包括空格 * 3. 结束的标识符前面不能有空格 * 4. heredoc可以解析变量和转义字符 */ $str = <<<AAA FDSAJFKLDASJFKLD;AJF;DASJFK;DASKF\nJD;KLSAFJKDLS;ANFDSAJFLKDS;A AAA; echo $str;
数组
/* Array:PHP中的数组是一个有序映射,映射是一种把values关联到keys的类型。 * -->array可以接受任意数量用逗号分割的健值对。 * PHP可以同时包含integer和string类型的键名。 * key:可以是一个整数integer或字符串string。 * value:可以是任意类型的值。 * * 1. 包含有合法整型值的字符串会被转换为整型(如"8"会被转换为8,但是"08"不能转换为8) * 2. 浮点数会被转换为整型,意味着小数部分会被舍去。 * 3. 布尔值会被转换为整型。 * 4. NULL会被转换为空字符串,即""。 * 5. 数组和对应不能被用为键名。 * * 如果数组定义中多个单元都用了同一个键名,则只会使用最后一个,之前其他的都会被覆盖。 */ echo "\n"; $arr1 = array( "key1" => "value1", "key2" => "value2" ); var_dump($arr1); echo "\n"; $arr2 = array( 1 => "a", 2.2 => "b", true => "c" //会对之前key为1的进行覆盖 ); //echo $arr2; echo不能直接对数组进行输出 var_dump($arr2); echo "\n"; //如果对给出的值没有指定键名,则取当前最大的整数索引值,则新的键名将是该值+1,如果指定的键名已经有值,则该值会被覆盖。 //所以key为可选项,如果未指定,PHP将自动使用之前用过的最大的integer键名+1作为新键名,最小值为0,如果当前还没有整数索引,键名为0 $arr2[] = 4; var_dump($arr2); echo "\n"; $arr3 = array( "a", //键值为0 "b", //键值为1 6 => "c", "d" //键值为7 ); var_dump($arr3); echo "\n"; //访问数组:可以用array[key]语法访问,也可以使用array{key} $arr4 = array( "key1" => "value1", "key2" => "value2" ); var_dump($arr4["key1"]); echo "\n"; var_dump($arr4{"key1"}); echo "\n"; $arr5 = array(5 =>1, 4 => 2); //数组的创建 var_dump($arr5); echo "\n"; $arr5[] = 3; //添加一个新的key-value对 var_dump($arr5); echo "\n"; $arr5["x"] = 5; //如果x存在,则覆盖value,如果不存在,添加 var_dump($arr5); echo "\n"; unset($arr5[4]); //移除该键值对 var_dump($arr5); echo "\n"; unset($arr5); //移除整个数组 // var_dump($arr5); echo "\n"; //注意:这里所使用的最大整数键名不一定就是当前数组中,它只要在上次数组重新生成索引后曾经存在过就行了。 $arr6 = array(1, 2, 3, 4, 5, 6); print_r($arr6); echo "\n"; foreach ($arr6 as $i => $value){ //遍历数组,移除所有元素 // echo $value; // echo "<br/>"; unset($arr6[$i]); } print_r($arr6); //此时数组为空 echo "\n"; $arr6[] = 9; //此时添加一个key-value(注意键名为6,不为0) print_r($arr6); echo "\n"; $arr6 = array_values($arr6); //重新索引 $arr6[] = 10; //此时key为1,上一个key为0 print_r($arr6); echo "\n"; //unset()函数允许删除数组中的某个键值对,但不会重新索引排序,如果需要删除后重建索引,可以用array_value()函数 //foreach as 控制结构专门用于数组的,它提供了一个简单的方法来遍历数组 //对于任意integer,float,string,boolean类型,如果将一个值转换为只有一个元素的数组(下标为0) $var = "你好"; printf("%s", $var); // var_dump(array($var)); echo "\n";
对象
/* *Object:对象,要创建一个新的对象object,使用new语句实例化一个类。 * */ class Foo { function do_foo() { echo "doing foo.."."\n"; } } $bar = new Foo(); $bar -> do_foo();
资源和null
/* * Resource资源类型:是一种特殊变量,保存了到外部资源的一个引用。 * * NULL:表示一个变量没有值。 * is_null():判断一个变量是否为NULL。 * unset():移除。 * 一个变量被认为NULL三种情况: * 被赋值为NULL。 * 尚未被赋值。 * 被unset()。 * * mixed:说明一个参数可以接受多种不同的(但不一定是所有的)类型。 * */
来源:https://www.cnblogs.com/jackw1/p/12580396.html