有趣的点
echo和print
echo比print速度快且echo没有返回值,而print有返回值为1。
echo允许输出一个或多个字符串,而print只允许输出一个字符串
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
EOF(heredoc)使用说明
结尾必须不带空格
<?PHP
$name = "hello";
echo <<<EOF
"abc"$name
"123"
EOF;
?>
PHP数据类型
- String(字符串)
- Integer(整型)
- Float(浮点型)
- Boolean(布尔型)
- Array(数组)
- Object(对象)
- NULL(空值)
- Resource(资源类型)
PHP类型比较
==
比较值不比较类型
===
比较值和类型
0, null, bool, ''
PHP_EOL
换行符
echo PHP_EOL;
PHP 常量
使用时不能在前面加$符号,否则会解析为变量
设置
bool define(string $name, mixed $value[, bool $case insensitive = false])
define("GREETING", "Hello, world!", true);
echo GREETING;
PHP运算符
运算符 | 作用 |
---|---|
<> | 不等于 |
!= | 不等于 |
!== | 绝对不等于 |
xor | 异或(如果x和y中有且仅有一个为true,则返回true) |
$c = $a <=> $b | 若$a > \(b则\)c为1 若$a == \(b则\)c为0 若$a < \(b则\)c为-1 |
PHP数组
数值数组
1.
$cars = array("Volvo", "BMW", "Toyota");
2.
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
遍历数值数组
for($x = 0; $x < count($cars); $x++){
echo $cars[$x];
echo "<br>";
}
关联数组
1.
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
2.
$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";
遍历关联数组
foreach($age as $x=>$x_value){
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
PHP数组排序
bool function($array)
函数 | 作用 |
---|---|
sort() | 对数组进行升序排列 |
rsort() | 对数组进行降序排列 |
asort() | 根据关联数组的值,对数组进行升序排列 |
ksort() | 根据关联数组的键,对数组进行升序排列 |
arsort() | 根据关联数组的值,对数组进行降序排列 |
krsort() | 根据关联数组的键,对数组进行降序排列 |
PHP超级全局变量
PHP中预定义了几个超级全局变量(superglobals),这意味着它们在一个脚本的全部作用域中都可用,无需特殊说明便可在函数及类中使用。
$GLOBALS
包含了全部变量的全局组合数组,变量的名字就是数组的键
实例:
<?PHP
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
print_r($GLOBALS);
$_SERVER
包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。
实例:
<?PHP
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
$_GET
$_POST
$_REQUEST
$_FILES
$_ENV
$_COOKIE
$_SESSION
foreach循环
foreach ($array as $value)
{
要执行代码;
}
foreach ($array as $key => $value)
{
要执行代码;
}
PHP魔术常量
LINE
文件中的当前行号
echo '这是第 "' . __LINE__ . '"行';
FILE
echo '该文件位于 "' . __FILE__ . '"';
DIR
文件所在的目录
FUNCTION
返回该函数被定义时的名字
function test(){
echo '函数名为: ' . __FUNCTION__;
}
CLASS
返回该类被定义时的名字
TRAIT
pass
METHOD
NAMESPACE
PHP面向对象
构造函数
function __construct(...){...}
析构函数
function __destructor(...){...}
继承
class Child extends Parent{...}
接口
<?PHP
// 声明一个'iTemplate'接口
interface iTemplate
{
public function setvariable($name, $var);
public function getHtml($template);
}
// 实现接口
class Template implements iTemplate
{
private $vars = array();
public function setvariable($name, $var)
{
$this->vars[$name] = $var;
}
public function getHtml($template)
{
foreach($this->vars as $name => $value) {
$template = str_replace('{' . $name . '}', $value, $template);
}
return $template;
}
}
抽象类
<?PHP
abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut() {
print $this->getValue() . PHP_EOL;
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}
class ConcreteClass2 extends AbstractClass
{
public function getValue() {
return "ConcreteClass2";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass2";
}
}
$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') . PHP_EOL;
$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') . PHP_EOL;
?>
结果:
ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2
Final关键字
如果父类中的方法被声明为final,则子类无法覆盖该方法。如果一个类被声明为final,则不能被继承。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。