php使用各种运算符实验报告,php运算符

PHP 运算符

一、实验介绍

1.1 实验内容

本节讲解PHP的运算符,它包含算术运算符、赋值运算符、位运算符、比较运算符、执行运算符、递增递减运算符、逻辑运算符、字符串运算符和数组运算符,它们之间的优先级也非常重要。

###二、算术运算符

https://dn-anything-about-doc.qbox.me/php%2F360%E6%88%AA%E5%9B%BE20141029170640829.jpg

取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。例如:

echo (5 % 3)."\n"; // prints 2

echo (5 % -3)."\n"; // prints 2

echo (-5 % 3)."\n"; // prints -2

echo (-5 % -3)."\n"; // prints -2

?>

三、赋值运算符

$a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。

?>

对于数组 array,对有名字的键赋值是用“=>”运算符。此运算符的优先级和其它赋值运算符相同。

在基本赋值运算符之外,还有适合于所有二元算术,数组集合和字符串运算符的“组合运算符”,这样可以在一个表达式中使用它的值并把表达式的结果赋给它,例如:

$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!";

?>

引用赋值

PHP 支持引用赋值,使用“$var = &$othervar;”语法。引用赋值意味着两个变量指向了同一个数据,没有拷贝任何东西。

$a = 3;

$b = &$a; // $b 是 $a 的引用

print "$a\n"; // 输出 3

print "$b\n"; // 输出 3

$a = 4; // 修改 $a

print "$a\n"; // 输出 4

print "$b\n"; // 也输出 4,因为 $b 是 $a 的引用,因此也被改变

?>

四、位运算符

/*

* Ignore the top section,

* it is just formatting to make output clearer.

*/

$format = '(%1$2d = %1$04b) = (%2$2d = %2$04b)'

. ' %3$s (%4$2d = %4$04b)' . "\n";

echo <<

--------- --------- -- ---------

result value op test

--------- --------- -- ---------

EOH;

/*

* Here are the examples.

*/

$values = array(0, 1, 2, 4, 8);

$test = 1 + 4;

echo "\n Bitwise AND \n";

foreach ($values as $value) {

$result = $value & $test;

printf($format, $result, $value, '&', $test);

}

echo "\n Bitwise Inclusive OR \n";

foreach ($values as $value) {

$result = $value | $test;

printf($format, $result, $value, '|', $test);

}

echo "\n Bitwise Exclusive OR (XOR) \n";

foreach ($values as $value) {

$result = $value ^ $test;

printf($format, $result, $value, '^', $test);

}

?>

以上例程会输出:

--------- --------- -- ---------

result value op test

--------- --------- -- ---------

Bitwise AND

( 0 = 0000) = ( 0 = 0000) & ( 5 = 0101)

( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)

( 0 = 0000) = ( 2 = 0010) & ( 5 = 0101)

( 4 = 0100) = ( 4 = 0100) & ( 5 = 0101)

( 0 = 0000) = ( 8 = 1000) & ( 5 = 0101)

Bitwise Inclusive OR

( 5 = 0101) = ( 0 = 0000) | ( 5 = 0101)

( 5 = 0101) = ( 1 = 0001) | ( 5 = 0101)

( 7 = 0111) = ( 2 = 0010) | ( 5 = 0101)

( 5 = 0101) = ( 4 = 0100) | ( 5 = 0101)

(13 = 1101) = ( 8 = 1000) | ( 5 = 0101)

Bitwise Exclusive OR (XOR)

( 5 = 0101) = ( 0 = 0000) ^ ( 5 = 0101)

( 4 = 0100) = ( 1 = 0001) ^ ( 5 = 0101)

( 7 = 0111) = ( 2 = 0010) ^ ( 5 = 0101)

( 1 = 0001) = ( 4 = 0100) ^ ( 5 = 0101)

(13 = 1101) = ( 8 = 1000) ^ ( 5 = 0101)

五、比较运算符

var_dump(0 == "a"); // 0 == 0 -> true

var_dump("1" == "01"); // 1 == 1 -> true

var_dump("10" == "1e1"); // 10 == 10 -> true

var_dump(100 == "1e2"); // 100 == 100 -> true

switch ("a") {

case 0:

echo "0";

break;

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

echo "a";

break;

}

?>

// 数组是用标准比较运算符这样比较的

function standard_array_compare($op1, $op2)

{

if (count($op1) < count($op2)) {

return -1; // $op1 < $op2

} elseif (count($op1) > count($op2)) {

return 1; // $op1 > $op2

}

foreach ($op1 as $key => $val) {

if (!array_key_exists($key, $op2)) {

return null; // uncomparable

} elseif ($val < $op2[$key]) {

return -1;

} elseif ($val > $op2[$key]) {

return 1;

}

}

return 0; // $op1 == $op2

}

?>

六、执行运算符

PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回(例如,可以赋给一个变量而不是简单地丢弃到标准输出)。

$output = `ls -al`;

echo "

$output
";

?>

七、递增/递减运算符

PHP 支持 C 风格的前后递增与递减运算符。

$i = 'W';

for ($n=0; $n<6; $n++) {

echo ++$i . "\n";

}

?>

以上例程会输出:

X

Y

Z

AA

AB

AC

// 下面的 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)

九、字符串运算符

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

$a = "Hello ";

$b = $a . "World!"; // now $b contains "Hello World!"

$a = "Hello ";

$a .= "World!"; // now $a contains "Hello World!"

?>

十、数组运算符

**+ 运算符把右边的数组元素(除去键值与左边的数组元素相同的那些元素)附加到左边的数组后面,但是重复的键值不会被覆盖。

**

$a = array("a" => "apple", "b" => "banana");

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

$c = $a + $b; // Union of $a and $b

echo "Union of \$a and \$b: \n";

var_dump($c);

$c = $b + $a; // Union of $b and $a

echo "Union of \$b and \$a: \n";

var_dump($c);

?>

执行后,此脚本会显示:

Union of $a and $b:

array(3) {

["a"]=>

string(5) "apple"

["b"]=>

string(6) "banana"

["c"]=>

string(6) "cherry"

}

Union of $b and $a:

array(3) {

["a"]=>

string(4) "pear"

["b"]=>

string(10) "strawberry"

["c"]=>

string(6) "cherry"

}

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

你可能感兴趣的:(php使用各种运算符实验报告)