42

PHP入门之类型与运算符(一)

 3 years ago
source link: http://www.cnblogs.com/lxfweb/p/13379573.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

PHP对于大部分人来说,是比较容易入门的。笔者也是刚学习不久,所以就把自己学习的基础知识进行总结和整理。第一部分是类型与运算符。如果你想学习PHP,可以参考PHP学习手册学习,任何一本教学资料也没有PHP学习手册讲的详细。传送门(提取码2dq2): PHP学习手册

类型

PHP支持8种原始类型,包括boolean(布尔型)、integer(整型)、float(浮点型,也称作 double)、string(字符串)、array(数组)、object(对象)、resource(资源)、NULL(无类型),还有三种伪类型。这里主要讲解前四种标量类型。PHP不用提前定义数据类型,它会自己识别。

整型

整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18。PHP 不支持无符号整数。Integer 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示。可以用下面的代码证明一下。

<?php
$a=12345;
echo "a的值为".$a;
echo '</br>';
echo "字节为".PHP_INT_SIZE;
echo '</br>';
echo "最大值为".PHP_INT_MAX;
echo '</br>';
echo var_dump($a);
?>

运行结果为:

nq2mumE.png!web

如果给定的一个整数,溢出了整数的范围,将直接会解释成float。

布尔型

布尔型细节

最简单的类型,true和false代表真和假。

当转换为 布尔 时,以下值被认为是 false:

• 布尔值 false 本身

• 整型值 0(零)

• 浮点型值 0.0(零)

• 空字符串,以及字符串 "0"

• 不包括任何元素的数组

• 不包括任何成员变量的对象(仅 PHP 4.0 适用)

• 特殊类型 NULL(包括尚未赋值的变量)

• 从空标记生成的 SimpleXML 对象

除了上面那些,其他的所有值都会被认为是true。

浮点型

精度为14个字节,从左边不是零的一个开始算起。

比如、

$a=0.123444555666666666;

echo "a的值为".$a;

输出的值为:a的值为0.12344455566667

当到第14位数时,它会自动四舍五入。

字符型

字符型最大可以达到 2GB。

需要注意的一点是区分单引号和双引号。用双引号定义的字符串最重要的特征是变量会被解析。举个例子。

$b=123;
echo "hello$b";
echo 'hello$b';     #结果为 hello123  hello$b

运算符

运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。下面对几种常用的运算符进行详细说明。

递增/递减运算符

举个例子

$i=10;
$i=++$i;    # ++在前,先++然后在赋值。所以输出的结果为11.
$i=i++;    # ++在后,先赋值,然后在++。所以输出的值为10.  //这里注意的是,++和--的对象是变量!!比如$a=++3就是错的!!
echo 'i的值为'.$i

--i和i--同样的道理。

算术运算符

$a + $b 加法 $a 和 $b 的和。

$a - $b 减法 $a 和 $b 的差。

$a * $b 乘法 $a 和 $b 的积。

$a / $b 除法 $a 除以 $b 的商。

$a % $b 取模 $a 除以 $b 的余数。

这些就不举例子了。还有$a+、$a-、$a*、$a/、$a%、(左加、左减、左乘、左除、左取余)。

举个例子。

$a=10;
$a-=2;
echo 'a的值为'.$a;  #执行结果为:a的值为8  $a-=2就相当于$a=10-2;

比较运算符

$a == $b 等于 TRUE,如果类型转换后 $a 等于 $b。

$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。

$a != $b 不等 TRUE,如果类型转换后 $a 不等于 $b。

$a <> $b 不等 TRUE,如果类型转换后 $a 不等于 $b。

$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。

$a < $b 小与 TRUE,如果 $a 严格小于 $b。

$a > $b 大于 TRUE,如果 $a 严格大于 $b。

$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。

$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。

$a <=> $b 结合比较运算符 当$a小于、等于、大于than $b时分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.

$a ?? $b ?? $c NULL 合并操作符 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供

逻辑运算符

  • $a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。
  • $a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
  • $a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
  • ! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE。
  • $a && $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE。
  • $a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE。
    and 和 &&都是逻辑与,区别是&&优先级高于and,and的优先级比赋值运算符还要低。
    举个例子。
$a= false&&true;
$b= true and false;
var_dump($a,$b);              #执行结果:bool(false) bool(true) $a=false$b=true
if ($a==false){               #因为,and的优先级低于“=”所以$b先进行了赋值。
    echo '$a=false';     
}
if ($b==true){
    echo '$b=true';
}

e2eERvR.png!web

||和or都是逻辑或,区别是||优先级高于or,or的优先级比赋值运算符还要低。

举个例子。

$a= true||false;
$b= false or true;
var_dump($a,$b);              #执行结果:bool(true) bool(false) $a=true$b=false
if ($a==true){                #因为,or的优先级低于“=”所以$b先进行了赋值。
echo '$a=true';
}
if ($b==false){
    echo '$b=false';
}

Zz6jA3V.png!web

字符串运算符

有两个字符串(string)运算符。第一个是连接运算符("."),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。

举个例子。

$a = "Hello ";         #执行结果为 Hello World!
$b = $a . "World!"; 
echo "$b";
$a = "Hello ";
$a .= "World!";       #执行结果为 Hello World!
echo "$a";

这里不仅可以连接字符串,如果是数字的话也会当作字符串去连接。

比如 $a=123;$b=456;echo $a.$b;

结果为:123456

三元运算符

格式:表达式1?表达式2:表达式3

含义:如果表达式1为真,执行表达式2,如果表达式1为假,则执行表达式3。

举个例子:

$a=2;
$b=3;
$c=$a<$b?"b大于a":"a大于b";
echo '$a='.$a,'<br/>','$b='.$b,'<br/>',$c;  #表达式2和表达式3可以是数,也可以是字符串,也可以是一个式子。

输出结果为:

$a=2

$b=3

b大于a

类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例

举个例子

class A{}

class B{}

$a=new A;

var_dump($a instanceof A);

var_dump($a instanceof B);

输出结果为:

bool(true) bool(false) //第一个为真,第二个为假。所以$a属于A类。

运算符优先级

这里直接参考的PHP学习手册,按照优先级,由高到低列出下表。

AFvMjar.png!web

小结

第一部分总结了PHP的一些数据类型和运算符。在下一部分中,会总结一些流程控制,包括分支控制、循环控制等。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK