1、x === y 绝对等于, 如果 x 等于 y,且它们类型相同,则返回 true 5===”5” 返回 false
2、(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
expr1 ?: expr3
表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
实例
<?php
$test = '菜鸟教程';
// 普通写法,:isset -- 检测变量是否设置,注意:PHP_EOL 是一个换行符,兼容更大平台。
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;
// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>
3、if
<?php
$t=date("H");
if ($t<"10")
{
echo "Have a good morning!";
}
elseif ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>
4、switch
<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
echo "你喜欢的颜色是红色!";
break;
case "blue":
echo "你喜欢的颜色是蓝色!";
break;
case "green":
echo "你喜欢的颜色是绿色!";
break;
default:
echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>
5、数组
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
//count() 函数用于返回数组的长度(元素的数量):3
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>
关联数组:下标为具体名称
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
遍历关联数组
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
数组排序
<pre>
<?php
$numbers=array(4,6,2,22,11);
sort($numbers);
print_r($numbers);
?>
</pre>
<pre>
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
print_r($cars);
?>
</pre>
6、超级全局变量
HP系统中自带的变量,在一个脚本的全部作用域中都可用。
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
(1)$GLOBALS,函数内部引用全局变量,不需要global声明
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
(2)_SERVER:包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
<!DOCTYPE html>
<html>
<body>
<?php
echo $_SERVER['PHP_SELF'];
//当前执行脚本的文件名(路径)
echo "<br>";
echo $_SERVER['SERVER_NAME'];
//当前运行脚本所在的服务器的主机名
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
//包含当前脚本的路径
?>
</body>
</html>
7、foreach 循环用于遍历数组。
<?php
$x=array("one","two","three");
foreach ($x as $value)
{
echo $value . "<br>";
}
?>
输出:
one
two
three
8、函数
<html>
<body>
<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>
</body>
</html>
9、魔术变量
很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名
__DIR__ 文件所在的目录
__FUNCTION__ 函数名称
__CLASS__ 类的名称
__METHOD__ 类的方法名
__NAMESPACE__ 当前命名空间的名称
<?php
class test {
function _print() {
echo '类名为:' . __CLASS__ . "<br>";
echo '函数名为:' . __FUNCTION__ ;
}
}
$t = new test();
$t->_print();
?>
PHP 实现了代码复用的一个方法,称为 traits
<?php
class Base {
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello();
?>
输出:Hello World!
10、 工作空间
file1.php
<?php
namespace Foo\Bar\subnamespace;
const FOO = 1;
function foo() {}
class foo
{
static function staticmethod() {}
}
?>
file2.php
<?php
namespace Foo\Bar;
include 'file1.php';
const FOO = 2;
function foo() {}
class foo
{
static function staticmethod() {}
}
/* 非限定名称 */
foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo
foo::staticmethod(); // 解析为类 Foo\Bar\foo的静态方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod
echo FOO; // resolves to constant Foo\Bar\FOO
/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
// 以及类的方法 staticmethod
echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO
/* 完全限定名称 */
\Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
?>