设为首页 收藏本站
查看: 1248|回复: 0

[经验分享] {php 数据类型}

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-23 16:51:16 | 显示全部楼层 |阅读模式
PHP 支持8种基本的数据类型。
四种标量类型:


  • boolean (布尔型)
  • integer (整型)
  • float (浮点型, 也称作 double)
  • string (字符串)

两种复合类型:


  • array (数组)
  • object (对象)

最后是两种特殊类型:


  • resource (资源)
  • NULL (NULL)

为了确保代码的易读性,本手册还介绍了一些伪类型:


  • mixed
  • number
  • callback

以及伪变量 $....
可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。
变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。

  Note: 如果想查看某个表达式的值和类型,用 var_dump()。
如果只是想得到一个易读懂的类型的表达方式用于调试,用 gettype()。要查看某个类型,不要用 gettype(),而用 is_type 函数。以下是一些范例:










<?php
$a_bool = TRUE;   // a boolean
$a_str  = "foo";  // a string
$a_str2 = 'foo';  // a string
$an_int = 12;     // an integer

echo gettype($a_bool); // prints out:  boolean
echo gettype($a_str);  // prints out:  string
// If this is an integer, increment it by four
if (is_int($an_int)) {
    $an_int += 4;
}
// If $bool is a string, print it out
// (does not print out anything)
if (is_string($a_bool)) {
    echo "String: $a_bool";
}
?>


如果要将一个变量强制转换为某类型,可以对其使用强制转换或者 settype() 函数。
注意变量根据其当时的类型在特定场合下会表现出不同的值。更多信息见类型戏法。此外,你还可以参考 PHP 类型比较表看不同类型相互比较的例子。



#





二、PHP的数据类型
Int zjj=100;                  //这种赋值是对的

Int zjj="hello,world";            //这种编译器就会提示错误

在PHP中,对变量的数据类型不需要声明,可以直接赋值。如下面的
$zjj=100;               //表示zjj为整型

$zjj="hello,world"            // 表示zjj为字符串型

PHP中的数据类型分成两种:一是标量数据类型,另一种就是复合数据类型。
标量数据类型有:
布尔型(boolean)         整型(integer)          浮点型(foat也叫做double)     
复合数据有:
数组(array)        对象(object)
还有两种特殊的数据
资源(resource)           空值(NULL)
1、布尔型是最简单的变量,布尔变量:true和false值
要设定一个布尔变量,只需将这两个值赋给变量就行了。PHP中就算是关键字也可以做变量名。
<?php
$True="我是变量" . True;                   //这里有点的,书上有时印刷并没有。
echo($True);
echo("<BR>");                        //起到回车的作用
echo("我是关键字" . True)
?>
执行结果:我是变量1                            //这里true就是1

                  我是关键字1
true和false实际上是代表数值1和0,因此true在输出时显示为1,但是在给变量赋值的时候,如果赋值为1,则被当成整型,如果被赋值为true,则被当成布尔型
当转换为布尔型时,以下值被认为是false
(1)布尔值false
(2)整型值0(零)
(3)浮点型值0.0(零)
(4)空白字符串和字符串"0"
(5)没有成员变量的数组
(6)没有单元的对象(仅适用php4)
(7)特殊类型NULL
而所有其他值都被认为是TRUE包括任何资源。
2、整型
+2147483647到-2147483647

<?php
$int_D=2147483647;  //十进制赋值
echo($int_D);
echo("<br>");
$int_H=0x7FFFFFFF;  //十六进制赋值
echo($int_H);
echo("<br>");
$int_O=017777777777;  //八进制赋值
echo($int_O);
echo("<BR>");
?>
执行结果:
2147483647
2147483647
2147483647
如果指定一个数超出了inter的范围,将会被解释为float
3、浮点型
1.7E-308到1.7E+308
<?php
$float_1=90000000000;  
echo($float_1);
echo("<br>");
$float_2=9E10;  
echo($float_2);
echo("<br>");
$float_3=9E+10;
echo($float_3);
?>
执行结果:
90000000000
90000000000
90000000000
4、字符串
PHP中有三种方式定义字符串
1、单引号方式。
$single_str='我是人';
如果想在浏览中输出单引号,必须在字符串中加入转义符号“\”
<?
$single_str='我被单引号括起来了!<br>';      //正常输出
echo $single_str;
$single_str='输出单引号: \'嘿嘿,我在单引号里面\'<br>';      //加了转义符可以输出单引号
echo $single_str;
$single_str='输出双引号:"我在双引号里面"<br>';         //正常输出
print $single_str;
$single_str='输双美元符号:$';                 //正常输出
print $single_str;
?>
执行结果:
我被单引号括起来了!
输出单引号: '嘿嘿,我在单引号里面'
输出双引号:"我在双引号里面"
输双美元符号:$
(2)、双引号方式
$Double_Str="我是人"
为了在字符串中输出各种特殊字符,可以使用转义符
$Double_Str="输出美元符号:\$";
$Double_Str="输出反斜杠:\\";
<?
$Double_str="我被双引号括起来了!<br>";
echo $single_str;
$single_str="输出单引号:'嘿嘿,我在单引号里面'<br>"; //不需要转义符
echo $single_str;
$single_str="输出双引号:\"我在双引号里面\"<br>";  //需要转义符
print $single_str;
$single_str="输出美元符号:\$ <br>";  //需要转义符
print $single_str;
$single_str="输出反斜杠 :\\ <br>";  //需要转义符
print $single_str;
?>
执行结果:
输出单引号:'嘿嘿,我在单引号里面'
输出双引号:"我在双引号里面"
输出美元符号:$
输出反斜杠 :\
(3)、Heredoc 方式给字符串赋值
<?
$zjj1_str =<<<zjj          //=<<<这个相当于链接符,获取zjj到zjj中间的数据
你好<br>
美元符号  $ <br>         //zjj1和zjj都是可以随便起名字的。
反斜杠   \<br>             
"我爱你"<br>
'我恨你'
zjj;
echo $zjj1_str;
?>
执行结果:
你好
美元符号 $
反斜杠 \
"我爱你"
'我恨你'
(4)、串中的变量
<?php
$str_1 = "我是变量的值!";  
$str_2 = "str_1 : $str_1<br>";  //双引号字符串中包含变量$str_1
echo $str_2;
$str_1 = '我是变量的值';
$str_2 = 'str_1 : $str_1<br>';  //单引号中包含字符串的值
echo $str_2;
$str_1 = "我是变量的值!";  
$str_2 = "str_1 : $str_12 <br>";  //引用的变量名后,多了个字符2即$str_12
echo $str_2;
$str_1 = "我是变量的值!";  
$str_2 = "str_1 : ${str_1}2 <br>";  //引用的变量名后,多了个字符2即$str_12
echo $str_2;
?>
执行结果:
str_1 : 我是变量的值!
str_1 : $str_1
str_1 :
str_1 : 我是变量的值!2
从输出可以看出,双引号字符串是赋值的含义,直接输出变量的值。而单引号的字符串,包含的是变量的名称,可以理解为直接运行语句的结果,直接输出变量的名称而不是变量的值。
$str_2 = "str_1 : $str_12 <br>";    这句如果变量后面跟着非空格的字符,会让编译器糊涂,会把$str_12当成变量,而上面又没有定义, DSC0000.jpg 因此会输出空值。为了解决这个问题可以用${str_1}2 或{$str_1}2 这个来表达。
使用 PHP 函数对变量 $x 进行比较

表达式gettype()empty()is_null()isset()boolean : if($x)




$x = "";
string
TRUE
FALSE
TRUE
FALSE


$x = null;
NULL
TRUE
TRUE
FALSE
FALSE


var $x;
NULL
TRUE
TRUE
FALSE
FALSE


$x is undefined
NULL
TRUE
TRUE
FALSE
FALSE


$x = array();
array
TRUE
FALSE
TRUE
FALSE


$x = false;
boolean
TRUE
FALSE
TRUE
FALSE


$x = true;
boolean
FALSE
FALSE
TRUE
TRUE


$x = 1;
integer
FALSE
FALSE
TRUE
TRUE


$x = 42;
integer
FALSE
FALSE
TRUE
TRUE


$x = 0;
integer
TRUE
FALSE
TRUE
FALSE


$x = -1;
integer
FALSE
FALSE
TRUE
TRUE


$x = "1";
string
FALSE
FALSE
TRUE
TRUE


$x = "0";
string
TRUE
FALSE
TRUE
FALSE


$x = "-1";
string
FALSE
FALSE
TRUE
TRUE


$x = "php";
string
FALSE
FALSE
TRUE
TRUE


$x = "true";
string
FALSE
FALSE
TRUE
TRUE


$x = "false";
string
FALSE
FALSE
TRUE
TRUE



松散比较 ==

TRUEFALSE10-1"1""0""-1"NULLarray()"php"""




TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE


FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
FALSE
TRUE


1
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


0
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
TRUE
FALSE
TRUE
TRUE


-1
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE


"1"
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


"0"
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE


"-1"
TRUE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE


NULL
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
TRUE


array()
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
TRUE
FALSE
FALSE


"php"
TRUE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE


""
FALSE
TRUE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
TRUE



严格比较 ===

TRUEFALSE10-1"1""0""-1"NULLarray()"php"""




TRUE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


1
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


0
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


-1
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


"1"
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE


"0"
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE


"-1"
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE


NULL
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE


array()
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
FALSE


"php"
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE


""
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE


#

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103122-1-1.html 上篇帖子: 关于PHP写的投票网站之刷票终结版 下篇帖子: php性能调优
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表