Php入门教程之PHP 运算符用法说明

Q7

透过上面包车型客车运算 $x的值应该是稍微?

$x = 3 + "15%" + "$25"

答案是18,PHP是会依靠上下文完结品类的自行调换

地点的代码大家得以那样掌握,若是大家在与字符串进行数学生运动算,实际php会尽可能将字符串中的数组实行转移,假若是数字最早的话则转变来改数字举个例子”15%”会产生15,要是不是数字初始则会形成0;
上边的演算相同上面 :

$x = 3 + 15 + 0

$x = “beijing”; 

运算符
说明
例子

Q5

上边包车型地铁代码有何样难题吗?输出会是什么样,怎么样修复它

$referenceTable = array();
$referenceTable['val1'] = array(1, 2);
$referenceTable['val2'] = 3;
$referenceTable['val3'] = array(4, 5);

$testArray = array();

$testArray = array_merge($testArray, $referenceTable['val1']);
var_dump($testArray);  
$testArray = array_merge($testArray, $referenceTable['val2']);
var_dump($testArray);  
$testArray = array_merge($testArray, $referenceTable['val3']);
var_dump($testArray);

事实上出口如下:

array(2) { [0]=> int(1) [1]=> int(2) }  
NULL  
NULL

运营的时候你或然仍为能够看出上面包车型大巴警告

Warning: array_merge(): Argument #2 is not an array  
Warning: array_merge(): Argument #1 is not an array

array_merge需求传入的参数都以数组,固然不是,则会回到null。
你能够这么改正

$testArray = array_merge($testArray, (array)$referenceTable['val1']);
var_dump($testArray);  
$testArray = array_merge($testArray, (array)$referenceTable['val2']);
var_dump($testArray);  
$testArray = array_merge($testArray, (array)$referenceTable['val3']);
var_dump($testArray);

$person = empty($who)? “laruence” : $who;

=
x=y
x=y

小说所列项支出的难点固然贴近轻松,可是每种背后都饱含了一个或多少个大家轻巧忽略的根底知识点,希望能够扶持到您的面试和平常工作。

新年底一运算符
安慕希能够看做是分歧平时的相比较运算符:

*
Multiplication
x=4
x*5
20

澳门新浦京娱乐游戏 1

连接运算符
字符串运算符主要指连接运算符“.”,它将一而再再而三其左右参数字符串。

/
Division
15/5
5/2
3
2.5

Q3

至于变量的引用;

$a = '1';
$b = &$a;
$b = "2$b";

借问 $a 和 $b的值各位多少

有个别第一时间会想到 $a=’1′
$b=’21′,稳重意气风发看 $b=&$a,这里$b是变量$a的引用并非直接 赋值。

3 $y /= $x; 

!
not
x=6
y=3
!(x==y) returns true

Q1

率先个难题有关弱类型

$str1 = 'yabadabadoo';
$str2 = 'yaba';
if (strpos($str1,$str2)) {  
    echo "/"" . $str1 . "/" contains /"" . $str2 . "/"";
} else {
    echo "/"" . $str1 . "/" does not contain /"" . $str2 . "/"";
}

没有疑问运维的出口结果:

"yabadabadoo" does not contain "yaba"

澳门新浦京娱乐游戏,strpos是回到字符串str2在str1的任务,未有找到则赶回false然则实际上这一次回来了0而在if语句中0也被充当false,所以大家供给对false做项目判定,正确的代码如下:

$str1 = 'yabadabadoo';
$str2 = 'yaba';
if (strpos($str1,$str2) !== false) {  
    echo "/"" . $str1 . "/" contains /"" . $str2 . "/"";
} else {
    echo "/"" . $str1 . "/" does not contain /"" . $str2 . "/"";
}

亟需小心的是大家利用了!==,在php 和 JS中= !相对==
更为严刻需求要求数据类型黄金年代致。

1 <?php 

运算符
说明
例子

Q2

上边包车型客车出口结果会是什么样?

$x = 5;
echo $x;  
echo "<br />";  
echo $x+++$x++;  
echo "<br />";  
echo $x;  
echo "<br />";  
echo $x---$x--;  
echo "<br />";  
echo $x;

骨子里运维结果是

5  
11  
7  
1  
5

有关 $x++ 和 $x–这么些标题莫过于非常轻便遇见,大家只需记住$x++使用以来的值,然后才自增。

运算符的优先级,++ 是分明超过 +,因而先实践++ 再试行 +
。关于运算符的优先级,临时大家的确能够因此括号来让我们的主次更令人直观的打听,究竟代码不光是用于实行的,不常也许共青团和少先队的可读性也是升高功效的生龙活虎种。

|| 逻辑或,也可写作 or $x = 2;
$y = 6;
$x && $y > 5 TRUE

注意赋值运算将原变量的值拷贝到新变量中(传值赋值),所以退换当中二个并不影响另一个。这也适合于在很密集的巡回中拷贝一些值举个例子命局组。也得以运用引用赋值,用
$var = &$othervar;
语法。引用赋值意味着多个变量都针对同一个数量,未有其它数据的正片。有关援引的越来越多音讯见引用的注解。在
PHP 第55中学,对象总是通过援用赋值的,除非鲜明使用新的 clone关键字

Q9

上边包车型客车出口结果会是怎样

$v = 1;
$m = 2;
$l = 3;

if( $l > $m > $v){  
    echo "yes";
}else{
    echo "no";
}

实则的输出是”no”,只要细心剖判就简单得出

$l>$m 会调换到1 ,则此时再和$m相比较。

运算符优先级的叁个不意气风发

<=
is less than or equal to
5<=8 returns true

Q6

$x应该是出口什么?

$x = true and false;
var_dump($x);

部分同学只怕会第一时间想到false,实际上这里依旧是强调拨运输算符的优先级,=
会比 and等级高点,由此等同下边包车型地铁代码

$x = true;
true and false

答案昭昭。

1 $y = ($x == 2) ? $x : 1;

%
Modulus (division remainder)
5%2
10%8
10%2
1
2
0

Q4

下面是true还是false

var_dump(0123 == 123);  
var_dump('0123' == 123);  
var_dump('0123' === 123);

var_dump(0123 == 123State of Qatar;//
false,PHP会暗中同意把0123充任8进制来管理,实际转变为10进制便是83,鲜明那不是特别的。

var_dump(’0123′ == 123卡塔尔(قطر‎;//
true这里php会特别常有意思的将’0123′调换来二个数字何况暗中认可去掉了日前的0相当于123==123

var_dump(’0123′ === 123State of Qatar;//
false很明显下面的题目已经说过了数字和字符串类型不一致等。

1 $y -= $x; 

正如运算符
正如运算符,就如它们名称所示意的,允许对五个值进行对比。倘若相比较三个卡尺头和字符串,则字符串会被撤换为整数。假设相比较五个数字字符串,则作为整数相比。此法则也适用于
switch 语句。

Q8

运作上边包车型地铁代码,$text 的值是某个?strlen($text卡塔尔又会回来什么结果?

$text = 'John ';
$text[10] = 'Doe';

地方代码施行完结后 $text = “JohnD”(John前面会有连续几日的5个空格State of Qatar strlen($textState of Qatar会回到11

$text[10] =
“Doe”给有个别字符串具体的某部地点具体字符时候,实际只会把D赋给$text.
尽管$text才起来只有5个自负长度,可是php会暗许填充空格。那和别的语言有一点异样。

<?php
/* 读取文件 */
$my_file = @file (‘file1’) or
    die (“展开文件失利,错误音信: ‘$php_errormsg'”);
?>

<?php
$a = 3;
$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;
$b = “Hello “;
$b .= “There!”; // sets $b to “Hello There!”, just like $b = $b .
“There!”;
?>

Q10

推行上面代码$x会变成什么样值吗?

$x = NULL;

if ('0xFF' == 255) {  
    $x = (int)'0xFF';
}

骨子里的运作结果是$x=0实际不是255.

率先’oxFF’ ==
255大家好剖断,会开展改动将16进制数字转变来10进制数字,0xff -> 255.

PHP使用is_numeric_string 判定字符串是还是不是带有十三进制数字然后开展调换。

而是$x =
(int卡塔尔’0xFF’;是不是也会成为255吗?显著不是,将叁个字符串举办强逼类型转变实际上用的是convert_to_long,它事实上是将字符串从左向右进行转移,遭逢非数字字符则截止。因而0xFF到x就终止了。所以$x=0

1 $y += $x;
实质上它相仿:

>=
is greater than or equal to
5>=8 returns false

6 $x = 2; 


Decrement
x=5
x–
x=4

1 $y = $y + $x;
同理有:

/=
x/=y
x=x/y

不久前在老王的本事手册见到二个主题素材:

&&
and
x=6
y=3
(x < 10 && y > 1) returns true

谬误决定运算符
似是而非决定运算符:@,当将其放置在叁个 PHP
说明式早前,该表达式也许发生的别的错误音信都被忽视掉。

 代码如下
复制代码

! 逻辑非,取逻辑的反面 $x = 2;
$y = 6;
!($x > $y) TRUE

||
or
x=6
y=3
(x==5 || y==5) returns false

5   

+=
x+=y
x=x+y

逻辑运算符

  • Subtraction
    x=2
    5-x
    3

2 $y = ($x = 2) + 5;    //结果为 $x=2,$y=7 

!=
is not equal
5!=8 returns true

exp最终, 顺便说一下, PHP对应于T_BOOLEAN_AND 还定义了
T_LOGICAL_AND(and) 和 T_LOGICAL_O锐界(orState of Qatar , 那俩个的开始时期级都自愧弗如等号,
于是就能够有了, 超多PHP入门教材示例代码中卓越的:

<?php
$a = ($b = 4卡塔尔国 + 5; // $a 未来成了 9,而 $b 成了 4。
?>

PHP 运算符首要归纳:

<?php
// 上面包车型地铁 foo(State of Qatar 不会被调用,因为它们被运算符“短路”了。
$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());
// “||” 的先行级比 “or” 高
$e = false || true; // $e 被赋值为 (false || trueState of Qatar,结果为 true
$f = false or true; // $f 被赋值为 false [Altair注:”=” 的先行级比 “or”
高]
var_dump($e, $f);
// “&&” 的预先级比 “and” 高
$g = true && false; // $g 被赋值为 (true && false卡塔尔,结果为 false
$h = true and false; // $h 被赋值为 true [Altair注:”=” 的优先级比
“and” 高]
var_dump($g, $h);
?>
上述例程的出口临近于:
bool(true)
bool(false)
bool(false)
bool(true)

9 ?>
依次减少同理。

 代码如下
复制代码

运算符 表达 例子 运算结果
== 等于 2 == 3 FALSE
!= 不等于,也可写作<> 2 == 3 TRUE
> 大于 2 > 3 FALSE
< 小于 2 < 3 TRUE
>= 大于等于 2 >= 3 FALSE
<= 小于等于 2 <= 3 TRUE

运算符
说明
例子
结果

算术运算符

>
is greater than
5>8 returns false

NULL,FALSE,array(卡塔尔国,””,0,”0″那多少个值如果用==他们是相当的,可是你意气风发旦剖断出某些值真正的再次来到值呢,就足以用

$a = 0;
$b = FALSE;
$a === FALSE 不成立,但 $b === FALSE成立,如果是==, $a == FALSE 和 $b ==
FALSE都成立

===运算符照旧很有用的,php某个内置函数成功会回来有些值,战败会回去false,假诺成功了但再次来到的是””只怕0之类的空值你怎么推断成功也许失利呢?那是就足以用
=== ,它能够区分变量类型。

参考:

正如运算符 例子 名称 结果
$a == $b 等于 TRUE,如果 $a 等于 $b。
$a === $b 全等 TRUE,如若 $a 等于 $b,况且它们的门类也少年老成致。(PHP 4
引入)
$a != $b 不等 TRUE,如果 $a 不等于 $b。
$a <> $b 不等 TRUE,如果 $a 不等于 $b。
$a !== $b 非全等 TRUE,假设 $a 不对等 $b,大概它们的系列分裂。(PHP 4
引入)
$a < $b 小与 TRUE,假使 $a 严谨小于 $b。
$a > $b 大于 TRUE,如果 $a 严格 $b。
$a <= $b 小于等于 TRUE,假如 $a 小于或然等于 $b。
$a >= $b 大于等于 TRUE,要是 $a 大于或许等于 $b。

例如比较二个整数和字符串,则字符串会被转移为整数。如若相比几个数字字符串,则作为整数比较。此法则也适用于
switch语句。

<?php

var_dump(0 == “a”); // 0 == 0 -> true

var_dump(“1” == “01”); // 1 == 1 -> true

var_dump(“1” == “1e0”); // 1 == 1 -> true

switch (“a”) {

case 0:

    echo “0”;

    break;

case “a”: // never reached because “a” is already matched with 0

    echo “a”;

    break;

}

?>

说了一批了咱们再看看另豆蔻梢头篇文章

运算符号(php)操作符号

按运算符号的作用分为

■算数运算符 + – * / % ++ –
■字符串运算符(连接运算符State of Qatar .
■赋值运算符  =   +=  -=  *=   %=   .=
■比较(关系、条件)运算符>  <   >=   <==  ==  ===  != 
<>  !==
■逻辑运算符 && and    ||or   !  not
■位运算符 &  |   ~ ^ <<   >>  >>>
■别的的预算符?  : ” ->  ->  ::  & $
■()改变优先等级
%有几个目标选拔:整除运算;调整范围,不要用小数,也决不用负数
%会把两侧的数转为整数后在整除
<?php
$year=2010;
if($yeay%4==0 && $year%100!=0  ||$year%400==0){
echo”二零一七年是闰年”;
}
支配范围
$num=4600009;
echo $num%10;//9任何数和10 取余不会超越9
$a++(先用变量再自增1卡塔尔(قطر‎  ++$a(先自增1在用变量)  $a–   –$a
<?php
$a=10;
$b=$a++;//$b=10  $a=11
$c=–$b;//$c=9 $b=9
//    9           +     11
$d=$c++  +  ++$c;//$d=20 $c=11
$e=$d–  –  –$d;//2
$name=”ljw”;
$age=25;
$heigh=1.75;
echo “作者的名字是:{$name}小编的年华:{$age}作者的身体高度{$hegit}”;
echo’笔者的名字是:’.$name.’笔者的年龄:’.$age.’作者的身体高度’.$hegit.;
echo “/$age=”.$age;相比较运算符———条件运算法符————-关系运算符
相比较后的结果唯有风流罗曼蒂克种  boolean  true   false
===全等运算符
!==
—————===相比时不止要求内容相通,也须求类型形似
&按位与(几个都为1才为1)    |按位或(有一个为1就为1)  
^异或(分裂为1均等为0)  ~取反(0与1互换) 左移  << ,
右移>>   无符号>>右移
—————————————————————————————–
$a=20;//16+4                00000000   00000000  00000000  00010100
—————————————————————————————–
$b=30;//16+8+4+2    00000000   00000000  00000000  00011110
—————————————————————————————–
$c= $a & $b;
echo $c;
&和|不只能够做为逻辑运算符,又能够作为位运算符
&&  ||
闭塞难题:&& 和||会产生窒碍
&& 在做运算时,假设日前的数为false,则前边是还是不是为true,整个表明式都以false
|| 在做运算是,纵然面前的数是true,则前边是或不是为false,整个表达式都为true;
&或|运算时,两侧都会被实践。
别的运算符
原则?创立实行这里 :不创设则施行这里
反引号施行操作系统命令 “

$str=`ipconfig/all`;
echo ‘<pre>’;
echo $str;
echo
‘</pre>’@getType(卡塔尔国;错误调节符,放在表达式前边,表达式有荒谬的时候屏蔽掉,不引入应用。

 代码如下
复制代码

4 echo $x;    //输出3 

==
is equal to
5==8 returns false

正如运算符也可用以字符串相比。

 代码如下
复制代码

&& 逻辑与,也可写作 and $x = 2;
$y = 6;
$x && $y > 5 FALSE

在主导赋值运算符之外,还恐怕有相符于全体二元算术,数组会集和字符串运算符的“组合运算符”,那样能够在三个表达式中选择它的值并把表达式的结果赋给它,比如:

<?phpif ($a = 100 && $b = 200) {     var_dump($a, $b);}

.=
x.=y
x=x.y

$a = (100 && $b卡塔尔 = 200而实在的结果, 确实高优先级的&&妥胁给次优先级的=,
让 $b = 200 先结合了.

-=
x-=y
x=x-y

  • 加 $x = 2;
    $y = $x+1; $y = 3
  • 减 $x = 2;
    $y = $x-1; $y = 1
    * 乘 $x = 2;
    $y = $x*3; $y = 6
    / 除,再次回到结果为浮点类型 $x = 6;
    $y = $x/3; $y = 2
    % 求余,重临结果为浮点类型 $x = 6;
    $y = $x%4; $y = 2
    ++ 递加,分为前加和后加
    对布尔值和 NULL 无效 $x = 2;
    ++$x;(前加)
    $x++;(后加) $x = 3
    – 依次减少,分为前依次减少和后依次减少
    对布尔值和 NULL 无效 $x = 2;
    –$x;(前减)
    $x–;(后减) $x = 1

除法运算符总是回到浮点数。独有在下列景况例外:多个操作数都以整数(或字符串调换来的子弹头)而且刚刚能整除,这个时候它回到四个整数。
取模运算符的操作数在运算在此之前都会调换成整数(除去小数部分)。
Note: 取模 $a % $b 在 $a 为负值时的结果也是负值。
例:

$person = $who or $person = “laruence”;

*=
x*=y
x=x*y

对于前加和后加,试行后的结果都以变量加1,其分别在于试行时再次回到结果不切合,仿效下边多少个例证:

++
Increment
x=5
x++
x=6

连接符与赋值运算符一齐可整合连接赋值运算符:

运算符
说明
例子

出口是什么样?

<?php
var_dump(0 == “a”); // 0 == 0 -> true
var_dump(“1” == “01”); // 1 == 1 -> true
var_dump(“1” == “1e0”); // 1 == 1 -> true
switch (“a”) {
case 0:
    echo “0”;
    break;
case “a”: // never reached because “a” is already matched with 0
    echo “a”;
    break;
}
?>

有好奇的同校, 会想领悟究竟为啥, 以前jayeeliu网络朋友也问过:

%=
x%=y
x=x%y

Note: Although = has a lower precedence than most other operators, PHP
will still allow expressions similar to the following: if (!$a = foo()),
in which case the return value of foo() is put into $a.

<
is less than
5<8 returns true

例子:

 代码如下
复制代码

例子:

<?php
/* tested under PHP 5.2.6-1 with Suhosin-Patch 0.9.6.2 (cli) on both
i386 and amd64, Debian lenny/sid */
$a = 2863311530;
$b = 256;
$c = $a % $b;
echo “$c <br />n”;
echo (2863311530 % 256).” <br />n”; /* directly with no
variables, just to be sure */
?>

1 <?php 

赋值运算符
中央的赋值运算符是“=”。少年老成开头容许会认为它是“等于”,其实不是的。它实留意味着把右电子表明式的值赋给侧面的运算数。
赋值运算表明式的值也便是所赋的值。约等于说,“$a = 3”的值是
3。那样就能够做一些小技术:

赋值运算符
赋值运算符“=”用于赋值运算,赋值运算符的作用在于把左侧的值赋值给左侧变量:

逻辑运算符
“与”和“或”有三种不相通式运算符的案由是它们运算的先行级不等(见运算符优先级)。
Example #1 逻辑运算符示例

好像的还足以用or来落到实处伊利操作符(?:卡塔尔(قطر‎的效劳:

  • Addition
    x=2
    x+2
    4

假使说布尔与事情发生在此之前的片段, 是由于事前级的主题素材,
可是如若生机勃勃味是优先级的标题标话, 那么结果应当是:

3 echo $x++;  //输出2 

运算符 表达 例子 运算结果

赋值运算符其余用法
赋值运算符能够嵌套使用:

php 恒等运算符(===State of Qatar与相比运算符(==卡塔尔(قطر‎的分歧

1 $x = 2;
该例子将整型值 2 赋值给变量 $x。

$x = “beijing”; 

$result = mysql_query(*)  or die(mysql_error());

laruence你好:
问四个php运算符优先级的主题素材
$t == 1 && $tt = 2
遵守php运算符优先级应该是
(($t == 1) && $tt) = 2
本条顺序实行,但实际上应该是
($t == 1) && ($tt = 2)
本人多少不太明了。

如该例子所示,字符和变量合作输出时供给接收连接运算符。

8 echo $x;    //输出3 

1.算术运算符
2.赋值运算符
3.比较运算符
4.伊利运算符
5.逻辑运算符
6.字符串运算符
7.谬误决定运算符

 

运算符 表明 例子 运算结果

2 $x = 2; 

2 $y *= $x; 

7 echo ++$x;  //输出3 

//等同于:    

$x .=”你好”;      //$x = “beijing你好”

实质上也简单,
运算符优先级是在存在二义性文法的时候的意气风发种规约法则接纳的手段,
而PHP的语法解析文件定义中,
却让等号和T_BOOLEAN_AND(&&卡塔尔(قطر‎此前不设有了轨道冲突:

 

 

3 ?>
赋值运算符的风流倜傥对变形使用办法:

expr_without_variable:  // 有隐法则设有,
也正是T_BOOLEAN_AND成为了”一元操作符”.  |   expr T_BOOLEAN_AND  {
zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); }

本条主题素材, 咋生龙活虎看恐怕感觉简单, 但其实留心研讨并不轻巧,

这么的布置, 个人不公布见解,
反正在C语言中,
那样相似的话语是判别为语法错的. PHP接纳那样的宏图, 很可能是历史原因,

该例子判别变量$x的值是或不是等于2,倘若$x等于2,那么$y的值就约等于$x(相当于相等2),反之$y就极度1。

$y = $x.”你好”;       //$y = “beijing你好”

4 $y %= $x; 

5 $y .= $x;   // . 为三回九转运算符,见字符串运算符
相比较运算符

恒等计算符,和比较运算符号“==”的分别是
“==”不会检查条件式的表明式的门类,恒等总括符会同期检查表明式的值与项目。
那至关心尊崇要和php是无类型语言有关,比如

 (A) ? (B) : (C)
语法解释:在 A求值为 TRUE 时整个表明式的值为 B,不然为 C。

究其原因, 是因为PHP并不完全据守优先级的定义, 这些在PHP的手册中也是有证实:

PHP 运算符

错误决定运算符平时用来在大概发生错误的地点屏蔽 PHP
的系统错误而唤醒友好的错误新闻

发表评论

电子邮件地址不会被公开。 必填项已用*标注