0.3 PHP 数据类型


  • 标量类型:int、float、string、bool
  • 复合类型:array、object
  • 特殊类型:null、resource
标量类型

  • 整数类型 int integer
    1. 十进制:$num=998
    2. 八进制:$num=0567
    3. 十六进制:$0x123
简写 描述
dec 十进制
bin 二进制
oct 八进制
hex 十六进制
  • 进制转换:
  • 十进制转换:转换的数据类型为字符串;
     ▪ 十进制转二进制 decbin():$num1=decbin(998)
     ▪ 十进制转八进制 decoct() :$num1=decoct(998)
     ▪ 十进制转十六进制 dechex():$num1=dechex(998)
     ▪ 模拟转换:除以进制数(2、8、16)的余数按倒叙方式重写的结果。
$a=12;
12/2=6 ..0
6/2=3 ..0
3/2=1 ..1
1/2=0 ..1
12的二进制为:1100
  • 二进制转换:转换的数据类型为整型;
     ▪ 二进制转十进制 bindec():$n=bindec("10101110")
     ▪ 二进制转八进制 binoct():$n=binoct("10101110")
     ▪ 二进制转十六进制 binhex():$n=binhex("10101110")
     ▪ 模拟进制转换运算:将每位数乘以对应权值,将结果相加;
$a="10101110";
0*2¹,1*2²,1*2³....;
= 128 + 0 + 32 + 0 + 8 + 4 + 2 + 0;
转换结果为:174
  • 八进制转换:转换的数据类型为整型;
     ▪ 八进制转十进制 octdec():$n=octdec("077")
     ▪ 八进制转二进制 octbin():$n=octbin("077")
     ▪ 八进制转十六进制 octhex():$n=octhex("077")
     ▪ 模拟进制转换运算:将每位数乘以对应权值,将结果相加;
//与二进制运算过程相仿
$a="077";
7*8¹,7*8²;
= 56+ 7;
转换结果为:63
  • 十六进制转换:二进制、八进制相仿;

  • 浮点类型 float double real
    1. 小数点:$num=1.234
    2. 科学记数:$num=1.234E3; //值为 1234; 模拟运算:1.234 * 10³
    3. 科学记数:$num=1234E3; //值为 1234000
    尽管结果是整数,但是也属于浮点类型。

  • 浮点类型的数值精度(模拟二进制):

$num=0.6;
0.6*2=1.2    //1
0.2*2=0.4    //0
0.4*2=0.8    //0
0.8*2=1.6    //1
0.6*2=1.2    //1
...死循环...
结果为:0.1001 1001 1001...
——————
$num2=0.625;
0.625*2=1.25  //1
0.25*2=0.5    //0
0.5*2=1       //1
结果为:0.101
  • 绝大部分小数无法完整转换成二进制,而电脑的运算恰恰是由二进制构成。因此浮点数不适合用来进行比较。
$n1=6.9;
if($n1/3==2.3){  // error;
        echo "ok";
}else{
        echo "error";
}
//   在这种情况下通常使用固定精度判断,假设要求 3位小数
if(round($n1*1000/3)==round(2.3*1000)){  // ok;
        echo "ok";
}else{
        echo "error";
}
  • 字符串类型 string
    PHP 中有四种表示方式,而且各不相同:
  • 单引号:不能识别变量,方便输出完整的字符;
    可以识别的转义符: \\\ \'
  • 双引号:可以自动识别变量等;
    可以识别的转义符: \\\ \" \n \r \t \$
  • nowdoc (单引号)定界符:适用于输出大段的 HTML、JS代码等;
    1. 结束标示符必须与开始保持一致;
    2. 结束标示符必须在所在行最前面;
    3. 结束标示符所在行只能写标示符和结束分号;
<?php
$str=<<< 'shuaige'  //必须加上''
不解析任何转义;
$sss \\ \t \n;
<p>这里有p标签 美女 这里有p标签</p>
shuaige;  //最前方
echo "<p>$str</p>";
?>
  • heredoc (双引号)定界符:起始标识名可以用 " " 或者直接声明。
    1. 结束标示符必须与开始保持一致;
    2. 结束标示符必须在所在行最前面;
<?php
$str=<<< meinv    //可直接书写,或加 ""
与双引号字符串转义相近;
<p>这里有p标签 美女 这里有p标签</p>
meinv;
echo "<p>$str</p>";
?>
  • 布尔类型 bool boolean
    表达了真值,可以为 TRUE 或 FALSEl,转换规则 参照
复合类型

  • 数组类型 array
    数组能够在单独的变量名中存储一个或多个值。
  • 在 PHP 中,数组的下标可以使用 整数 或 字符串;
    1. 数字下标常被称为 "索引";
    2. 字符串下标常被称为 "键名";
    3. 还可创建包含一个或多个数组的多维数组;
  • 创建数组:
    ▪ 自动分配索引:
$arrs=array("美女","帅哥","美哥");
//自动分配的下标:  0、1、2

▪ 手动分配索引:

$a[0]="我才";
$a[2]="fuck";
$a[5]=111;

▪ 创建关联数组:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// or
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
  • count() 函数:获得数组的长度;
$arrs=array("美女","帅哥","美哥");
echo count($arrs);
  • 遍历数组:
    ▪ 遍历索引数组:
$arrs=array("美女","帅哥","美哥");
$len=count($arrs);
for($i=0;$i<$len;$i++){
        echo "$arrs[$i]";
        echo "<br/>";
}

▪ 遍历关联数组:

$age=array("张三"=>"998","貂蝉"=>"18","SB"=>"22");
foreach($age as $i=>$val) {
        echo "Key=" . $i . ", Value=" . $val;
}
  • object 对象类型
    JS 中对象除自己创建,还有内置的 window、location,标签对象;
    PHP 中的对象通常均指自定义创建的对象;
<?php
//定义一个类
class girl{
    public $name="美女";
    public $age=22;
    public function say(){
        echo "hello!";
        echo "我叫".$this->$name;
        echo "今年".$this->age;
    }
}
$v=new girl();  //创建一个对象
$v->name="小花";  //设定名称
$v->age=18;  //设定年龄
$v->say();  //调用函数方法
?>
特殊类型

  • 资源类型 resource
    指对外部资源的引用,比如数据库、文件、图片;PHP 通过语法(或方式)对其进行操作。

  • 空类型 null
    指计算机编程中的 "概念" 类型,表示没有数据、没有意义。

类型转换

  • 自动类型转换:是弱类型语言中一个非常方便的特性。
  • if(—数据—):转换为布尔类型;
  • 算术运算符:转换为数值类型;
  • 连接运算符:转换为字符串类型;
  • 比较运算符:转换为布尔、数值类型;
  • 强制类型转换:通过语法让数据转换成指定的类型。
<?php
$v1=(int)7.8;
$v2=(float)$v1;
echo $v1.",v1的数据类型为".getType($v1)."<br/>";
echo $v2.",v1的数据类型为".getType($v2);
  • 相关的系统函数
类型 描述
var_dump() 输出变量的完整信息。
getType() 获取变量的类型名称,结果返回字符。
setType() 设置变量的类型:setType($num,"float")
isset() 用来判断一个变量是否存在。
empty() 判断一个数据是否为空。
unset() 删除、销毁一个变量。
is_xx() 判断一个变量是否为某种数据类型。
is_int()、is_float()、is_numeric()...... 等等。

以上详细判断规则可以 参照

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 一、php可以做什么 php是一种可以在服务器端运行的编程语言,可以运行在Web服务器端。 php是一门后台编程语...
    空谷悠阅读 3,080评论 4 97
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,766评论 1 10
  • 宝贝今天表现很好,虽然不舍但是还算可以,没有一直抱着妈妈不松手。晚上是外婆接放学的,到家之后有点不乖,没礼貌,很多...
    淡秋赏宁阅读 129评论 0 0
  • 介绍 因为之前自己建数据库,喜欢所有东西全部放在SQLHeper类中,但是学习sunShine过程中发现更好的模式...
    Y海泉阅读 199评论 0 0