一、PHP简介
PHP:超文本预处理器(译者注:PHP: Hypertext Preprocessor,递归命名)
PHP 是一种服务器端的脚本语言,类似 ASP
PHP 文件的文件后缀是 ".php"、".php3" 或 ".phtml"

PHP的好处:
1.跨平台
2.与大多服务器相兼容(Apache、IIS 等)
资源免费下载:www.php.net

二:PHP基本语法:
PHP脚本块格式:<?php XXX ?>  简写方式:<? xxx ?>

简单代码示例:

<html>
<body>
<?php
echo "Hello World";
?>
</body>
</html>

PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
有两种通过 PHP 来输出文本的基础指令:echo 和 print。

PHP注释:
// 来编写单行注释,或者使用 /* 和 */ 来编写大的注释块。
示例代码:

<html>
<body>
<?php
//This is a comment /*
This is
a comment
block
*/
?>
</body>
</html>

三、PHP变量:
PHP 中的所有变量都是以 $ 符号开始的。
$var_name = value;
示例代码:

<?php
$txt = "Hello World!";
$number = 16;
?>

PHP 是一门松散类型的语言(Loosely Typed Language)
在 PHP 中,不需要在设置变量之前声明该变量。
根据变量被设置的方式,PHP会自动地把变量转换为正确的数据类型。
在PHP中,变量会在使用时被自动声明。
在强类型的编程语言中,您必须在使用前声明变量的类型和名称。

变量命名规则:
变量名必须以字母或下划线 "_" 开头。
变量名只能包含字母数字字符以及下划线。
变量名不能包含空格。如果变量名由多个单词组成,那么应该使用下划线进行分隔(比如 $my_string),或者以大写字母开头(比如 $myString)。

四、PHP字符串:
示例代码:
PHP 脚本把字符串 "Hello World" 赋值给名为 $txt 的字符串变量:

<?php
$txt="Hello World";
echo $txt;
?>

以上代码的输出:Hello World

并置运算符(Concatenation Operator):连接字符串
示例代码:

<?php
$txt1="Hello World";
$txt2="1234";
echo $txt1 . " " . $txt2;
?>

以上代码的输出:Hello World 1234

strlen()函数:计算字符串长度

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

以上代码的输出:12

strpos()函数:在字符串内检索一段字符串或一个字符的位置  索引从0开始 6表示检索的字符的首位的索引号

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

以上代码的输出是:6

五、PHP运算符(省略)和C#一致

六、If...Else 语句
If...Else 语句
如果您希望在某个条件成立时执行一些代码,在条件不成立时执行另一些代码,请使用 if....else 语句。
语法:
if (condition)
  code to be executed if condition is true;
else
  code to be executed if condition is false;
实例:
如果当前日期是周五,下面的代码将输出 "Have a nice weekend!",否则会输出 "Have a nice day!":

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
else
echo "Have a nice day!";
?>
</body>
</html>

如果需要在条件成立或不成立时执行多行代码,应该把这些代码行包括在花括号中:

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
{
echo "Hello!<br />";
echo "Have a nice weekend!";
echo "See you on Monday!";
}
?>
</body>
</html>

ElseIf 语句
如果希望在多个条件之一成立时执行代码,请使用 elseif 语句
语法
if (condition)
  code to be executed if condition is true;
elseif (condition)
  code to be executed if condition is true;
else
  code to be executed if condition is false;

实例
如果当前日期是周五,下面的例子会输出 "Have a nice weekend!",如果是周日,则输出 "Have a nice Sunday!",否则输出 "Have a nice day!":

<html>
<body>
<?php
$d=date("D");
if ($d=="Fri")
echo "Have a nice weekend!";
elseif ($d=="Sun")
echo "Have a nice Sunday!";
else
echo "Have a nice day!";
?>
</body>
</html>

七、Switch语句
如果您希望有选择地执行若干代码块之一,请使用 Switch 语句。
使用 Switch 语句可以避免冗长的 if..elseif..else 代码块。
语法:
switch (expression)
{
case label1:
  code to be executed if expression = label1;
  break;  
case label2:
  code to be executed if expression = label2;
  break;
default:
  code to be executed
  if expression is different
  from both label1 and label2;
}

实例
工作原理:
对表达式(通常是变量)进行一次计算
把表达式的值与结构中 case 的值进行比较
如果存在匹配,则执行与 case 关联的代码
代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
如果没有 case 为真,则使用 default 语句

<?php
switch ($x)
{
case 1:
echo "Number 1";
break;
case 2:
echo "Number 2";
break;
case 3:
echo "Number 3";
break;
default:
echo "No number between 1 and 3";
}
?>

八、PHP数组
数值数组
数值数组存储的每个元素都带有一个数字 ID 键。
可以使用不同的方法来创建数值数组:
例子 1
在这个例子中,会自动分配 ID 键:

$names = array("Peter","Quagmire","Joe");

例子 2
在这个例子中,我们人工分配的 ID 键:

$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";

可以在脚本中使用这些 ID 键:

<?php
$names[0] = "Peter";
$names[1] = "Quagmire";
$names[2] = "Joe";
echo $names[1] . " and " . $names[2] . " are ". $names[0] . "'s neighbors";
?>

以上代码的输出:
Quagmire and Joe are Peter's neighbors

关联数组
关联数组,它的每个 ID 键都关联一个值。
在存储有关具体命名的值的数据时,使用数值数组不是最好的做法。
通过关联数组,我们可以把值作为键,并向它们赋值。
例子 1
在本例中,我们使用一个数组把年龄分配给不同的人:

$ages = array("Peter"=>32, "Quagmire"=>30, "Joe"=>34);

例子 2
本例与例子 1 相同,不过展示了另一种创建数组的方法:

$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";

可以在脚本中使用 ID 键:

<?php
$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";
echo "Peter is " . $ages['Peter'] . " years old.";
?>

以上脚本的输出:
Peter is 32 years old.

多维数组
在多维数组中,主数组中的每个元素也是一个数组。在子数组中的每个元素也可以是数组,以此类推。
例子 1
在本例中,我们创建了一个带有自动分配的 ID 键的多维数组:

$families = array
(
"Griffin"=>array
(
"Peter",
"Lois",
"Megan"
),
"Quagmire"=>array
(
"Glenn"
),
"Brown"=>array
(
"Cleveland",
"Loretta",
"Junior"
)
);

如果输出这个数组的话,应该类似这样:

Array
(
[Griffin] => Array
(
[0] => Peter
[1] => Lois
[2] => Megan
)
[Quagmire] => Array
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
)

例子 2
让我们试着显示上面的数组中的一个单一的值:

echo "Is " . $families['Griffin'][2] .
" a part of the Griffin family?";

以上代码的输出:
Is Megan a part of the Griffin family?

九、PHP循环
while 语句
只要指定的条件成立,while 语句将重复执行代码块。
语法
while (condition)
code to be executed;

例子
下面的例子示范了一个循环,只要变量 i 小于或等于 5,代码就会一直循环执行下去。循环每循环一次,变量就会递增 1:

<html>
<body> <?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br />";
$i++;
}
?> </body>
</html>

do...while 语句
do...while 语句会至少执行一次代码 - 然后,只要条件成立,就会重复进行循环。

语法
do
{
code to be executed;
}
while (condition);

例子
下面的例子将对 i 的值进行一次累加,然后,只要 i 小于 5 的条件成立,就会继续累加下去:

<html>
<body> <?php
$i=0;
do
{
$i++;
echo "The number is " . $i . "<br />";
}
while ($i<5);
?> </body>
</html>

for语句
如果您已经确定了代码块的重复执行次数,则可以使用 for 语句。
语法

for (initialization; condition; increment)
{
  code to be executed;
}

注释:for 语句有三个参数。第一个参数初始化变量,第二个参数保存条件,第三个参数包含执行循环所需的增量。如果 initialization 或 increment 参数中包括了多个变量,需要用逗号进行分隔。而条件必须计算为 true 或者 false。
例子

下面的例子会把文本 "Hello World!" 显示 5 次:

<html>
<body> <?php
for ($i=1; $i<=5; $i++)
{
echo "Hello World!<br />";
}
?> </body>
</html>

foreach 语句
foreach 语句用于循环遍历数组。
每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地移动) - 以此类推。
语法
foreach (array as value)
{
    code to be executed;
}

例子
下面的例子示范了一个循环,这个循环可以输出给定数组的值:

<html>
<body> <?php
$arr=array("one", "two", "three"); foreach ($arr as $value)
{
echo "Value: " . $value . "<br />";
}
?> </body>
</html>

十、PHP函数:

函数是一种可以在任何被需要的时候执行的代码块。
创建PHP函数
所有的函数都使用关键词 "function()" 来开始
命名函数 - 函数的名称应该提示出它的功能。函数名称以字母或下划线开头。
添加 "{" - 开口的花括号之后的部分是函数的代码。
插入函数代码
添加一个 "}" - 函数通过关闭花括号来结束。

例子
一个简单的函数,在其被调用时能输出我的名称的:

<html>
<body> <?php
function writeMyName()
{
echo "David Yang";
} writeMyName();
?> </body>
</html>

使用PHP函数
现在,我们要在 PHP 脚本中使用这个函数了:

<html>
<body> <?php
function writeMyName()
{
echo "David Yang";
} echo "Hello world!<br />";
echo "My name is ";
writeMyName();
echo ".<br />That's right, ";
writeMyName();
echo " is my name.";
?> </body>
</html>

以上代码的输出:

Hello world!
My name is David Yang.
That's right, David Yang is my name.

PHP有参函数:
您可能注意到了,函数名称后面有一个括号,比如 writeMyName()。参数就是在括号中规定的。

例子1
下面的例子讲输出不同的名字,但姓是相同的:

<html>
<body> <?php
function writeMyName($fname)
{
echo $fname . " Yang.<br />";
} echo "My name is ";
writeMyName("David"); echo "My name is ";
writeMyName("Mike"); echo "My name is ";
writeMyName("John");
?> </body>
</html>

上面的代码的输出:
My name is David Yang.
My name is Mike Yang.
My name is John Yang.

例子 2
下面的函数有两个参数:

<html>
<body> <?php
function writeMyName($fname,$punctuation)
{
echo $fname . " Yang" . $punctuation . "<br />";
} echo "My name is ";
writeMyName("David","."); echo "My name is ";
writeMyName("Mike","!"); echo "My name is ";
writeMyName("John","...");
?> </body>
</html>

上面的代码的输出:
My name is David Yang.
My name is Mike Yang!
My name is John Yang...

PHP函数返回值
函数也能用于返回值。
例子

<html>
<body> <?php
function add($x,$y)
{
$total = $x + $y;
return $total;
} echo "1 + 16 = " . add(1,16);
?> </body>
</html>

以上代码的输出:1 + 16 = 17

十一、PHP表单和用户输入

PHP表单处理
表单实例:
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>

上面的 HTML 页面实例包含了两个输入框和一个提交按钮。当用户填写该表单并单击提交按钮时,表单的数据会被送往 "welcome.php" 这个文件。
"welcome.php" 文件类似这样:

<html>
<body>

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old.

</body>
</html>

上面这个脚本的输出样本类似这样:
Welcome John.
You are 28 years old.

表单验证
应该在任何可能的时候对用户输入进行验证。客户端的验证速度更快,并且可以减轻服务器的负载。
不过,任何流量很高以至于不得不担心服务器资源的站点,也有必要担心站点的安全性。如果表单访问的是数据库,就非常有必要采用服务器端的验证。
在服务器验证表单的一种好的方式是,把表单传给它自己,而不是跳转到不同的页面。这样用户就可以在同一张表单页面得到错误信息。用户也就更容易发现错误了。

十二、$_GET:

用于收集来自 method="get" 的表单中的值。
$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。

$_GET 变量用于收集来自 method="get" 的表单中的值。从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符)。

例子

<form action="welcome.php" method="get">
Name: <input type="text" name="name" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

当用户点击提交按钮时,发送的 URL 会类似这样:
http://www.w3school.com.cn/welcome.php?name=Peter&age=37

"welcome.php" 文件现在可以通过 $_GET 变量来获取表单数据了(请注意,表单域的名称会自动成为 $_GET 数组中的 ID 键):

Welcome <?php echo $_GET["name"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old!

为什么使用 $_GET?
注释:在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。所以在发送密码或其他敏感信息时,不应该使用这个方法。不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。

注释:HTTP GET 方法不适合大型的变量值;值是不能超过 100 个字符的。
$_REQUEST 变量

PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。

PHP 的 $_REQUEST 变量可用来取得通过 GET 和 POST 方法发送的表单数据的结果。
例子

Welcome <?php echo $_REQUEST["name"]; ?>.<br />
You are <?php echo $_REQUEST["age"]; ?> years old!

十三、$_POST:

用于收集来自 method="post" 的表单中的值。

$_POST 变量是一个数组,内容是由 HTTP POST 方法发送的变量名称和值。
$_POST 变量用于收集来自 method="post" 的表单中的值。从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。

例子

<form action="welcome.php" method="post">
Enter your name: <input type="text" name="name" />
Enter your age: <input type="text" name="age" />
<input type="submit" />
</form>

当用户点击提交按钮,URL 不会含有任何表单数据,看上去类似这样:
http://www.w3school.com.cn/welcome.php
"welcome.php" 文件现在可以通过 $_POST 变量来获取表单数据了(请注意,表单域的名称会自动成为 $_POST 数组中的 ID 键):

Welcome <?php echo $_POST["name"]; ?>.<br />
You are <?php echo $_POST["age"]; ?> years old!

为什么使用 $_POST?
通过 HTTP POST 发送的变量不会显示在 URL 中。
变量没有长度限制。
不过,由于变量不显示在 URL 中,所以无法把页面加入书签。

$_REQUEST 变量
PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
PHP 的 $_REQUEST 变量可用来取得通过 GET 和 POST 方法发送的表单数据的结果。
例子
Welcome <?php echo $_REQUEST["name"]; ?>.<br />
You are <?php echo $_REQUEST["age"]; ?> years old!

扩展:w3school PHP在线教程>>

PHP基础笔记汇总的更多相关文章

  1. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  2. Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总

    Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...

  3. REDIS基础笔记

    Redis基础笔记 资源链接 简介 简介 安装 五种数据类型及相应命令 1. 字符串类型 2. 散列类型 3. 列表类型 4. 集合类型 5. 有序集合 其他 事务 SORT 生存时间 任务队列 发布 ...

  4. ES6 笔记汇总

    ES6 笔记汇总 二.ES6基础-let和const命令 三.变量的解构赋值 四.字符串的拓展 五.正则表达式的拓展 ...将会持续更新,敬请期待

  5. jquery基础知识汇总

    jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...

  6. Java基础笔记 – Annotation注解的介绍和使用 自定义注解

    Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Anno ...

  7. MySQL笔记汇总

    [目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...

  8. NGUI学习笔记汇总

    NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...

  9. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

随机推荐

  1. English Notes

    1. Thanks for stopping by.慢走不送. 2. I don't like to judge a book by it's cover.我不喜欢以貌取人. 3. Rush hour ...

  2. JS正则实例

    <html> <body> </body> </html> <script> var strSrc = "xxa1b01c001y ...

  3. 离线安装PM2

    因为要部署应用的机器没有公网连接,所以直接npm install pm2是不可能了, 简单记录一下怎么离线安装pm2 首先,找一台可以在线安装pm2的机器 执行 npm install pm2 -g ...

  4. Linux文件夹文件创建、删除

    Linux删除文件夹命令 linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可.直接rm就可以了,不过要加两个参数-rf 即:rm ...

  5. uWSGI其三:uWSGI搭配Nginx使用

    http://www.nowamagic.net/academy/detail/1330334 上一篇介绍了 uWSGI 来部署 Django 程序,但在在生产环境中单单只有 uWSGI 是不够的,N ...

  6. 光流算法:Brox光流的OpenCV源码解析

    OpenCV中DeepFlow代码其实是Brox光流,而非真正的DeepFlow光流,在将近一个月的研究.移植及优化过程中,对Brox光流有了较深刻的认识.我对OpenCV中源码进行了详细的分析,并以 ...

  7. 转载 radio值获取

    选择控件:select ,radio,checkbox之用jquery获取选中值的小结 博客分类: jQuery select下拉框radio单选按钮checkbox多选框jquery获取选中的值  ...

  8. 将你的代码上传 Bintray 仓库

    在 Android Studio 中,我们通常可以利用 gradle 来导入别人写的第三方库,通常可以简单得使用一句话就能搞定整个导包过程, 比如: compile 'net.cpacm.moneyt ...

  9. 翻译「C++ Rvalue References Explained」C++右值引用详解 Part1:概述

    本文系对「C++ Rvalue References Explained」 该文的翻译,原文作者:Thomas Becker. 该文较详细的解释了C++11右值引用的作用和出现的意义,也同时被Scot ...

  10. Decks

    Now that we have Card objects, the next step is to define a class to represent decks. Since a deck i ...