2016年2月10日

php

基本语法

<?php
// 此处是 PHP 代码
?>
<!DOCTYPE html>
<html>
<body>

<h1>我的第一张 PHP 页面</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。

注释

<?php
// 这是单行注释

# 这也是单行注释

/*
这是多行注释块
它横跨了
多行
*/
?>

变量

  • 变量以 $ 符号开头,其后是变量的名称

  • 变量名称必须以字母或下划线开头

  • 变量名称不能以数字开头

  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)

  • 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)

PHP 有三种不同的变量作用域:

  • local(局部)

  • global(全局)

  • static(静态)

Local 和 Global 作用域

  • 函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。

  • 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。

<?php
$x=5; // global scope

function myTest() {
   $y=10; // local scope
   echo "<p>在函数内部测试变量:</p>";
   echo "变量 x 是:$x";
   echo "<br>";
   echo "变量 y 是:$y";
} 

myTest();

echo "<p>在函数之外测试变量:</p>";
echo "变量 x 是:$x";
echo "<br>";
echo "变量 y 是:$y";
?>

//输出
//
/*
在函数内部测试变量:
变量 x 是:
变量 y 是:10


在函数之外测试变量:
变量 x 是:5
变量 y 是: 

*/

函数内访问全局变量

function myTest() {
  global $x,$y;
  $y=$x+$y;
}
//or
function myTest() {
  $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}

静态变量

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。 要完成这一点,请在您首次声明变量时使用 static 关键词:

<?php

function myTest() {
  static $x=0;
  echo $x;
  $x++;
}

myTest();
myTest();
myTest();

?>

//输出:
0
1
2
3
4

PHP echo 和 print 语句

  • echo - 能够输出一个以上的字符串

  • print - 只能输出一个字符串,并始终返回 1

两者是语言结构,有没有括号均可以使用。

PHP 数据类型

字符串、整数、浮点数、逻辑、数组、对象、NULL。

PHP 字符串函数

strlen() 函数返回字符串的长度,以字符计。

<?php
echo strlen("Hello world!");
?>
//12

strpos() 函数用于检索字符串内指定的字符或文本。

如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。

<?php
echo strpos("Hello world!","world");
?>
//6

PHP 常量

常量是单个值的标识符(名称)。在脚本中无法改变该值。

define() 函数 - 它使用三个参数:

  • 首个参数定义常量的名称

  • 第二个参数定义常量的值

  • 可选的第三个参数规定常量名是否对大小写敏感。默认是 false。

<?php
define("GREETING", "Welcome to W3School.com.cn!");
echo GREETING;
?>

PHP 字符串运算符

<?php
$a = "Hello";
$b = $a . " world!";//串接
echo $b; // 输出 Hello world!

$x="Hello";
$x .= " world!";//  串接赋值
echo $x; // 输出 Hello world!
?>

PHP 循环

  • while - 只要指定条件为真,则循环代码块

  • do...while - 先执行一次代码块,然后只要指定条件为真则重复循环

  • for - 循环代码块指定次数

  • foreach - 遍历数组中的每个元素并循环代码块

如果您已经提前确定脚本运行的次数,可以使用 for 循环。

<?php 
for ($x=0; $x<=10; $x++) {
  echo "数字是:$x <br>";
} 
?>

foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。

<?php 
$colors = array("red","green","blue","yellow"); 

foreach ($colors as $value) {
  echo "$value <br>";
}
?>

PHP 函数

创建

<?php
function writeMsg() {
  echo "Hello world!";
}

writeMsg(); // 调用函数
?>

参数

<?php
function setHeight($minheight=50) {
  echo "The height is : $minheight <br>";
}

setHeight(350);
setHeight(); // 将使用默认值 50,如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值
setHeight(135);
setHeight(80);
?>

数组

<?php
$cars=array("Volvo","BMW","SAAB");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

三种数组类型:

  • 索引数组 - 带有数字索引的数组

//索引是自动分配的(索引从 0 开始):
$cars=array("Volvo","BMW","SAAB");
//or
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";

//遍历数组
<?php
$cars=array("Volvo","BMW","SAAB");
$arrlength=count($cars);//获取数组长度

for($x=0;$x<$arrlength;$x++) {
  echo $cars[$x];
  echo "<br>";
}
?>
  • 关联数组 - 带有指定键的数组

关联数组是使用您分配给数组的指定键的数组。

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
//或者:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
  • 多维数组 - 包含一个或多个数组的数组

PHP - 数组的排序函数

  • sort() - 以升序对数组排序

按照字母升序对数组 $cars 中的元素进行排序:

<?php
$cars=array("Volvo","BMW","SAAB");
sort($cars);
?>

按照数字升序对数组 $numbers 中的元素进行排序:

<?php
$numbers=array(3,5,1,22,11);
sort($numbers);
?>
  • rsort() - 以降序对数组排序

类似sort();

  • asort() - 根据值,以升序对关联数组进行排序

  • ksort() - 根据键,以升序对关联数组进行排序

  • arsort() - 根据值,以降序对关联数组进行排序

  • krsort() - 根据键,以降序对关联数组进行排序

超全局变量 PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

  • $GLOBALS

  • $_SERVER

  • $_REQUEST

  • $_POST

  • $_GET

  • $_FILES

  • $_ENV

  • $_COOKIE

  • $_SESSION

Last updated