php数据类型

PHP数据类型

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:说明一个参数可以接受多种不同的(但不一定是所有的)类型。
 *
 */

相关推荐