PHP基础语法

1,php标记:<?php 和 ?>

当解析一个文件时,PHP 会寻找起始和结束标记,也就是 <?php 和 ?>,这告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。

PHP 也允许使用短标记 <? 和 ?>,但不鼓励使用。只有通过激活 php.ini 中的 short_open_tag 配置指令或者在编译 PHP 时使用了配置选项 –enable-short-tags 时才能使用短标记。

从 HTML 中分离

<?php if ($expression == true): ?>
  This will show if the expression is true.
<?php else: ?>
  Otherwise this will show.
<?php endif; ?>

PHP 变量

与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。
变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。

PHP 变量规则:

变量以 $ 符号开始,后面跟着变量的名称
变量名必须以字母或者下划线字符开始
变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
变量名不能包含空格
变量名是区分大小写的($y 和 $Y 是两个不同的变量)

备注: ASCII 字符从 127 到 255(0x7f-0xff)也是可以的。
$this 是一个特殊的变量,它不能被赋值。

变量默认总是传值赋值
引用赋值:使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)


<?php
$foo = 'Bob';              //'Bob' 赋给 $foo
$bar = &$foo;              // 通过 $bar 引用 $foo  代表是同一个对象
$bar = "My name is $bar";  // 修改 $bar 变量
echo $bar;
echo $foo;                 // $foo 的值也被修改
?>

global 关键字
在方法中使用使用全局变量需要用global进行声明。


<?php $a = 1; $b = 2; function Sum() { global $a, $b; $b = $a + $b; } Sum(); echo $b; ?>

或者用通过 $GLOBALS 替代 global

GLOBALS GLOBALS 是一个关联数组,每一个变量为一个元素,键名对应变量名,值对应变量的内容。


<?php $a = 1; $b = 2; function Sum() { $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; } Sum(); echo $b; ?>

使用静态变量,在方法内部使用静态变量

<?php function test() { static $a = 0; echo $a; $a++; } ?>
现在,变量 $a 仅在第一次调用 test() 函数时被初始化,之后每次调用 test() 函数都会输出 $a 的值并加一。

常量

常量和变量有如下不同:

常量前面没有美元符号($);
常量只能用 define() 函数定义,而不能通过赋值语句;
常量可以不用理会变量的作用域而在任何地方定义和访问;
常量一旦定义就不能被重新定义或者取消定义;
常量的值只能是标量。

1,可以用 define() 函数来定义常量

// 合法的常量名
define("FOO",     "something");
define("FOO2",    "something else");
define("FOO_BAR", "something more");

echo FOO;// 输出something

2,使用关键字 const 定义常量


<?php // 以下代码在 PHP 5.3.0 后可以正常工作 const CONSTANT = 'Hello World'; echo CONSTANT; ?>

类型

PHP 支持 8 种原始数据类型。

四种标量类型:

boolean(布尔型)
integer(整型)
float(浮点型,也称作 double)
string(字符串)

两种复合类型:

array(数组)
object(对象)

最后是两种特殊类型:

resource(资源)
NULL(无类型)

为了确保代码的易读性,本手册还介绍了一些伪类型:

mixed(混合类型)
number(数字类型)
callback(回调类型)

以及伪变量 $…。

可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。

变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。

赋值运算符

基本的赋值运算符是“=”
引用赋值,使用“$var = &$othervar;”语法。

<?php
基本赋值
$a = ($b = 4) + 5; // $a 现在成了 9,而 $b 成了 4。

引用赋值
$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 的引用,因此也被改变
?>

注意:
自 PHP 5 起,new 运算符自动返回一个引用,因此再对 new 的结果进行引用赋值在 PHP 5.3 以及以后版本中会发出一条 E_DEPRECATED 错误信息,在之前版本会发出一条 E_STRICT 错误信息。

比较运算符

$a <> $b  不等  
TRUE,如果类型转换后 $a 不等于 $b$a <=> $b  结合比较运算符     
当$a小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供. 

$a ?? $b ?? $c   NULL 合并操作符  
从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。 

错误控制运算符

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。


<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
    die ("Failed opening file: error was '$php_errormsg'");

// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist. ?> 

执行运算符

PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同

<?php $output = `ls -al`; echo "<pre>$output</pre>"; ?>

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


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

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

数组运算符

例子 名称 结果
$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; // 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);

$a += $b; // Union of $a += $b is $a and $b
echo "Union of \$a += \$b: \n";
var_dump($a);
?>

类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例:


<?php
class MyClass {
}

class NotMyClass {
}
$a = new MyClass;

var_dump($a instanceof MyClass);
var_dump($a instanceof NotMyClass);
?>

你可能感兴趣的:(PHP,基本语法及运算符)