php 数组运算符(+)、字符串运算符(.)、逻辑运算符(&& AND || OR XOR)

php数组运算符

$a + $b 联合 $a 和 $b 的联合。
$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。

PHP 仅有的一个数组运算符是 + 运算符。它把右边的数组附加到左边的数组后,但是重复的键值不会被覆盖。

 代码如下 复制代码

$a = array("a" => "apple", "b" => "banana");
$b = array("a" =>"pear", "b" => "strawberry", "c" => "cherry");

$c = $a + $b;

var_dump($c);

执行后,此脚本会显示:

 代码如下 复制代码

array(3) {
  ["a"]=>
  string(5) "apple"
  ["b"]=>
  string(6) "banana"
  ["c"]=>
  string(6) "cherry"
}

数组中的单元如果具有相同的键名和值则比较时相等。

Example #1 比较数组

 代码如下 复制代码

<?php
$a = array("apple", "banana");
$b = array(1 => "banana", "0" => "apple");

var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
?>

字符串运算符

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

 代码如下 复制代码

<?php

echo "thr"."ee";           //prints the string "three"
echo "twe" . "lve";        //prints the string "twelve"
echo 1 . 2;                //prints the string "12"
echo 1.2;                  //prints the number 1.2
echo 1+2;                  //prints the number 3

?>

 代码如下 复制代码

<?php

 $a = '12345';

// This works:
 echo "qwe{$a}rty"; // qwe12345rty, using braces
 echo "qwe" . $a . "rty"; // qwe12345rty, concatenation used

// Does not work:
 echo 'qwe{$a}rty'; // qwe{$a}rty, single quotes are not parsed
 echo "qwe$arty"; // qwe, because $a became $arty, which is undefined

?>

逻辑运算符

下表逻辑运算符举例

$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 。

“与”和“或”有两种不同形式运算符的原因是它们操作的优先级不同。

 代码如下 复制代码

<?php

($a = $_GET['var']) || ($a = 'a default');

?>

 代码如下 复制代码

<?php

// 下面的 foo() 不会被调用,因为它们被运算符“短路”了。
$a = (false && foo());
$b = (true  || foo());
$c = (false and foo());
$d = (true  or  foo());

// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 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)

时间: 2024-09-19 20:42:16

php 数组运算符(+)、字符串运算符(.)、逻辑运算符(&& AND || OR XOR)的相关文章

PHP学习 运算符与运算符优先级_php基础

算术运算符   运算符      名称    结果               $a + $b      加法    $a 和 $b 的和   $a - $b      减法    $a 和 $b 的差   $a * $b      乘法    $a 和 $b 的积   $a / $b      除法    $a 除以 $b 的商   $a % $b      取模    $a 除以 $b 的余数 递增/递减运算符   运算符    名称       结果   ++$a   前加   $a 的值

100个开源C/C++项目中的bugs(一)数组和字符串处理的错误

from:http://www.oschina.net/question/1579_45444 100个开源C/C++项目中的bugs 摘要 介绍 发现错误样本的各类开源项目 数组和字符串处理的错误 未定义行为 与运算符优先级相关的错误 格式化输出错误 代码打印错误例子 不正确的使用基本函数和类 无效代码的例子 总为 true 或 false 的条件 代码漏洞 复制粘贴 逾期空指针检查 杂项 摘要 本文演示静态代码分析的能力. 提供了100个已在开源C/C++项目中发现的错误例子给读者研究.所有

javascript中数组和字符串的方法对比_javascript技巧

前面的话 字符串和数组有很多的相同之处,它们的方法众多,且相似度很高:但它们又有不同之处,字符串是不可变值,于是可以把其看作只读的数组.本文将对字符串和数组的类似方法进行比较 可索引 ECMAScript5定义了一种访问字符的方法,使用方括号加数字索引来访问字符串中的特定字符 可索引的字符串的最大的好处就是简单,用方括号代替了charAt()调用,这样更加简洁.可读并且可能更高效.不仅如此,字符串的行为类似于数组的事实使得通用的数组方法可以应用到字符串上 如果参数超出范围或是NaN时,则输出un

javascript运算符——位运算符全面介绍_基础知识

前面的话 位运算符是非常底层的运算,由于其很不直观,所以并不常用.但是,其速度极快,且合理使用能达到很好的效果.本文将介绍javascript中常常被忽视的运算符--位运算符 二进制表示 ECMAScript中的所有数值都以IEEE-754 64位格式存储,但位操作符并不直接操作64位的值,而是以32位带符号的整数进行运算的,并且返回值也是一个32位带符号的整数 这种位数转换使得在对特殊的NaN和Infinity值应用位操作时,这两个值都会被当成0来处理 如果对非数值应用位操作符,会先使用Num

VBS教程:运算符-Mod 运算符_vbs

Mod 运算符 两个数值相除并返回其余数. result = number1 Mod number2 参数 result 任意数值变量. number1 任意数值表达式. number2 任意数值表达式. 说明 模数或余数.运算符执行 number1 除以 number2 操作(浮点数四舍五入为整数)并只返回余数作为 result.例如,在下面的表达式中, A(为 result)等于 5. A = 19 Mod 6.7 如果任一表达式为 Null,则 result 也为 Null.任一表达式为

VBS教程:运算符-Is 运算符_vbs

Is 运算符 比较两个对象引用变量. result = object1 Is object2 参数 result 任意数值变量. object1 任意对象名. object2 任意对象名. 说明 如果 object1 和 object2 都引用同一个对象,则 result 为 True:否则 result 为 False.可以使用许多方法使两个变量引用同一个对象. 在下列代码中,使 A 引用的对象与 B 的对象相同: Set A = B 在下列代码中使 A 与 B 引用的对象与 C 的对象相同:

javascript数组和字符串基本操作

Javascript数组基本操作     Javascript中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数,然而这些数字索引在内部被转换为字符串类型,这是因为javascript对象中的属性名必须是字符串.  一:如何创建数组?    创建数组有2中方式,第一种是对象字面量如下:    var  arrs = [];  // 定义了一个空数组.    还有一种方式是:调用Array的构造函数创建数组    var arrs = new Array(); 二:数组的

php的数组与字符串的转换函数整理汇总

以下是对php中的数组与字符串的转换函数进行了详细的整理汇总,需要的朋友可以参考下   1.将一个字符串转化为数组str_split()用于将一个字符串转化为数组语法: 复制代码 代码如下: str_split(string,length) <SPAN style="COLOR: #333333"><SPAN style="FONT-SIZE: 12px"><SPAN style="FONT-FAMILY: 宋体"&

js数组与字符串的相互转换方法

  这篇文章主要介绍了js数组与字符串的相互转换方法,是js中常用的技巧,需要的朋友可以参考下 熟悉js的朋友很多都遇到过js的数组与字符串相互转换的情况,本文就此作一简单介绍,示例如下: 一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二.字符串转数组 实现方法为将字符串按某个字符切割成若干个字符串,并以数组形式返回,示例代码如下: var s = &qu