安装环境:WAMP,如果不想只用记事本编辑代码,用IDE也行,下载了easyeclipse for php。
基本:
PHP 脚本以 开始,以 ?> 结束:
echo "Hello World!";
?>
变量:
PHP 变量规则:
· 变量以 $ 符号开始,后面跟着变量的名称
· 变量名必须以字母或者下划线字符开始
· 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
· 变量名不能包含空格
· 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
$txt="Hello world!"; //弱类型
$x=5;
$y=10.5;
?>
作用域:
1、在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字,否则内部访问不到全局。
2、在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
3、PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称,引号括起来。这个数组可以在函数内部访问,也可以直接用来更新全局变量。此时不用在内部用global声明了。
4、当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字。
5、参数是通过调用代码将值传递给函数的局部变量。参数是在参数列表中声明的,作为函数声明的一部分:
function myTest($x)
{
echo $x;
}
myTest(5);
?>
在 PHP 中有两个基本的输出方式: echo 和 print
echo 和 print 区别:
· echo - 可以输出一个或多个字符串
· print - 只允许输出一个字符串,返回值总为 1
· 如echo "This"," string", " was", " made", " with multipleparameters.";
提示:echo 输出的速度比print 快, echo 没有返回值,print有返回值1。
echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。字符串可以包含字符串、字符串变量、HTML 标签。print 命令类似。
$txt1="Learn PHP";
$txt2="w3cschool.cc";
$cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "
";
echo "Study PHP at $txt2";
echo "My car is a {$cars[0]}";
?>
数据类型:
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
测试:var_dump($x) 函数返回变量的数据类型和值。
数组:
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>
对象:
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
空值:NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据:
常量:
设置常量,使用 define() 函数,函数语法如下:
define(stringconstant_name, mixed value, case_sensitive = true)
该函数有三个参数:
· constant_name:必选参数,常量名称,即标志符。
· value:必选参数,常量的值。
· case_sensitive:可选参数,指定是否大小写敏感,设定为 true 表示不敏感。
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
字符串变量:
并置运算符:
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
上面的代码将输出:Helloworld! What a nice day!
strlen() 函数返回字符串的长度(字符数)strlen() 常常用在循环和其他函数中,因为那时确定字符串何时结束是很重要的。
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
下面的实例在字符串 "Helloworld!" 中查找文本 "world":
echo strpos("Hello world!","world");
?>
输出6.注意从0算起。
运算符(略)
条件结构:
$t=date("H");
if ($t<"10")
{
echo "Have a good morning!";
}
else if ($t<"20")
{
echo "Have a good day!";
}
else
{
echo "Have a good night!";
}
?>
$favcolor="red";
switch ($favcolor)
{
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red,blue, or green!";
}
?>
数组:
在 PHP 中,有三种类型的数组:
· 数值数组 - 带有数字 ID 键的数组
· 关联数组 - 带有指定的键的数组,每个键关联一个值
· 多维数组 - 包含一个或多个数组的数组
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . "," . $cars[1] . " and " . $cars[2] . ".";
$arrlength=count($cars);//获取数组长度
for($x=0;$x<$arrlength;$x++)//遍历
{
echo $cars[$x];
echo "
";
}
?>
这里有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
or:
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
例子:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] ." years old.";
?>
遍历关联数组:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ",Value=" . $x_value;
echo "
";
}
?>
数组排序函数:(排序的依据根据数组元素类型)
· sort() - 对数组进行升序排列
· rsort() - 对数组进行降序排列
· asort() - 根据关联数组的值,对数组进行升序排列
· ksort() - 根据关联数组的键,对数组进行升序排列
· arsort() - 根据关联数组的值,对数组进行降序排列
· krsort() - 根据关联数组的键,对数组进行降序排列
超级全局变量:
PHP中预定义了几个超级全局变量(superglobals),这意味着它们在一个脚本的全部作用域中都可用。你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
· $GLOBALS
· $_SERVER
· $_REQUEST
· $_POST
· $_GET
· $_FILES
· $_ENV
· $_COOKIE
· $_SESSION
$GLOBAL 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目。
echo $_SERVER['PHP_SELF'];
echo "
";
echo $_SERVER['SERVER_NAME'];
echo "
";
echo $_SERVER['HTTP_HOST'];
echo "
";
echo $_SERVER['HTTP_REFERER'];
echo "
";
echo $_SERVER['HTTP_USER_AGENT'];
echo "
";
echo $_SERVER['SCRIPT_NAME'];
?>
PHP $_REQUEST 用于收集HTML表单提交的数据。键值为表单元素中的name。
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。
具体区别见后面。
循环:
重点:foreach 循环用于遍历数组。
foreach ($array as $value)
{
要执行代码;
}
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
$x=array("one","two","three");
foreach ($x as $value)
{
echo $value . "
";
}
?>
函数:
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>
魔术变量:
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。等价于 dirname(__FILE__)
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。
__CLASS__ 类的名称(PHP 4.3.0 新加)
__METHOD__ 类的方法名
__NAMESPACE__ 当前命名空间的名称(区分大小写)
命名空间是用来组织和重用代码的[1] 。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的冲突了。
命名空间:
PHP 命名空间可以解决以下两类问题:
1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。你也可以在同一个文件中定义不同的命名空间代码:
< ?php
namespace MyProject1;
// MyProject1 命名空间中的PHP代码
namespace MyProject2;
// MyProject2 命名空间中的PHP代码
// 另一种语法
namespace MyProject3 {
//MyProject3 命名空间中的PHP代码
}
?>
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP代码包括空白符都不能出现在命名空间的声明之前。
php
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject {
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
子命名空间:
namespace MyProject\Sub\Level; //声明分层次的单个命名空间
PHP 命名空间中的类名可以通过三种方式引用(略)。