PHP的基本数据类型

PHP提供了九种类型的值或称为数据类型。

四种标量型(单值):整型,浮点型,字符串和布尔型。

两种复合类型(集合):数组、对象。

三种种特殊类型:资源类型、NULL类型、callable类型(PHP 5.4之前的callback伪类型)


1. 标量型

1.1 integer整型

//长度与C编译器的长数据类型的范围相当;

//整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。

$i1 = 123;<span style="white-space:pre">	</span>
$i2 = 0b111;<span style="white-space:pre">	</span>//二进制前加 0b , <span style="white-space: pre;">二进制表达的 integer 自 PHP 5.4.0 起可用。	</span>
$i3 = 0123;<span style="white-space:pre">	</span>//八进制前加 0(零)
$i4 = 0x123;<span style="white-space:pre">	</span>//十六进制前加 0x

echo '十进制:'.$i1."\n";
echo '二进制:'.$i2."\n";
echo '八进制:'.$i3."\n";
echo '十六进制:'.$i4."\n";
可以 使用is_int() 函数判断一个值是否是一个整型

if(is_int(0x123)){
    echo 'is integer';
}else {
    echo 'not integer';
}
//可以通过 (integer)$x 或 intval($x)函数将不同类型转换成整型

echo (integer)false ."_".intval(123.321);

1.2float  浮点数(通常简称实数)

//长度与C编译器的双精度数据类型的范围一样;

$f1 = 3.14;
$f2 = -3.1400;
$f3 = 0.314E1;  //科学计数法
$f4 = 314E-2;

echo $f1."\n";
echo $f2."\n";
echo $f3."\n";
echo $f4."\n";

//使用is_float()函数(或其别名is_real())来测试一个值是否是浮点数

if (is_float(3.14) && is_real(314E-2)) {
    echo "All is float\n";
}
//浮点值只是数的近似表示,所以要避免浮点值之间直接比较,通常比较前几位

if(intval(3.1415926 * 100) == (integer)(pi() * 1000)) {
    echo 'equal';
}else {
    echo 'not equal';
}

1.3 boolean 布尔型

//和大多数编程语言一样,PHP定义了一些值为true,一些为false.

//在PHP中,以下值的计算结果(转换为boolean是的结果)为 false

  • #关键字 false
  • #整型 0
  • #浮点数 0.00
  • #空字符串(“”)和字符串 “0”
  • #空数组
  • #空对象
  • #null值
class ccc{}
$c;
$c = new CCC;
if($c){
    echo '"$c" is alive'."\n";
    unset($c);<span style="white-space:pre">	</span>//销毁变量
}
$tmp;
$arr = array();
if( 0 || 0.00|| "" || "0" || null || false || $tmp || $arr || $c) {
    echo "someone's value is true";
}else {
    echo "value: all false and \$c is death \n";
}

1.4 string 字符串

//字符串是一个任意长度的字符序列,PHP中字符串字面量由单引号、双引号或界定符分隔:

$str1 = "str1"; //双引号内容经过PHP语法分析器解析
$str2 = str1;
$str3 = 'str3';//单引号不被解析
echo "$str1\n<br>";
echo "$str2\n<br>";
echo $str3.'_$str3';
echo "\n<br>".'\n<br>';     //字符串之间用 “.” 拼接

//界定符 <<<   (结束标识符必须单独另起一行,并且不允许有空格。在标识符前后不允许有其他符合或字符)
$str4 = '显示该行内容';
echo <<<std
\n这和双引号没有什么区别
\$str4的内容为:$str4    //双引号内关键字符必须用转义符

std;

//根据下标直接取得字符串具体位置字符
echo string[0]."_"."string"[1]."_".'string'[2];
echo "\n";
//直接使用 == 比较两个字符串是否相等

if("aaa" == "aaa"){
    echo "equal \n";
}
//判断一个变量是否为字符串
if (is_string("123455")){
    echo "it is a string \n";
}


2. 复合类型

2.1 array 数组

数组保存一组值,这些值可以由下标或一些标识性的名称(字符串)来确定关联

$tmpInt = 123;

$arr1 = array(1, 12, $tmpInt, "双引号", '单引号', false, true);
echo "$arr1[0]_$arr1[1]_$arr1[2]_$arr1[3]_$arr1[4]";
echo "\n";
echo "$arr1[5]_$arr1[6]"; //数组中 false同样不输出, true 转换成1
echo $arr1[7];//越界不报错,也不存在任何值
echo "\n";

//若采用key-value方式定义,则只存在key值下标,不存在默认的数值下标
$arr2 = array("int" => $tmpInt,
                "str" => "字符串");
echo "$arr2[int]_$arr2[0]_$arr2[str]_$arr2[1]";
echo "\n";
//
$arr3[0] = 123;
$arr3[int] = 1234;
echo "$arr3[0] _ $arr3[int]";

2.2 object 对象

PHP也支持面向对象编程(OOP)。

//类的定义
class Student {
    public $name = "";
    function  setName($newName = NULL){
        if(!is_null($newName)){
            $this->name = $newName;
        }
        return $this->name;
    }
}

//类的创建以及方法调用
$stu = new Student;
$stu->setName("xyy");
echo "Hi,$stu->name";

3. 特殊类型

3.1 resource资源类型

许多模块提供一些函数用于处理外部事物。

#数据库连接

#文件

#图片

#等等

每个活动的资源都有一个唯一的标识符,每个标识符对应着PHP内部结构表中的一个数字,这个表中报错了有关所有活动的资源信息。PHP在这个表中保存每个资源的信息,以及在这个代码中引用的资源数码。当最后一个引用资源销毁,创建该资源的扩展将被调用,用于释放内存、关闭连接等。

$con = mysql_connect("addr","name","password");
if (is_resource($con)) {
    echo 'it is a resource';
}

3.2 NULL 类型

NULL数据类型只有一个值。这个值可以通过不区分大小写的关键字NULL获得。

NULL值表示一个变量没有值(类似于Python中的None)

echo is_null($nulllll);


3.3 callable回调类型

回调是一些函数或对象的方法被另一些函数的调用,如call_user_func().

回调也可以通过create_function()方法和闭包创建

//下列示例代码取自PHP官方文档
// An example callback function
function my_callback_function() {
        echo "Hello \n";
}

// An example callback method
class MyClass {
    static function myCallbackMethod() {
        echo "Hi \n";
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function');

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod'));

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A

/*
 * 示例二:
 */
// Our closure
$double = function($a) {
    return $a * 2;
};

// This is our range of numbers
$numbers = range(1, 5);

// Use the closure as a callback here to
// double the size of each element in our
// range
$new_numbers = array_map($double, $numbers);

print implode(' ', $new_numbers);

//判断是否为回调类型

$double = function($a) {
    return $a * 2;
};
if(is_callable($double)) {
    echo 'callable';
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值