PHP语法概述
A. 基本语法
即使初次接触PHP的用户也会发现自己对PHP的语法风格并不陌生。
例如:<?php
echo “Hello!”;
?>
显示结果为“Hello!”。
PHP中,所有的变量都以标识“$”开头。我们可以对上述代码做如下改动:
<?php
$greeting = “Hello!”;
echo $greeting;
?>
改变后的代码显示结果不变。
PHP中使用“.”符号连接不同的字符串,而其它的算术运算符则继承了流行编程语言的风格。举例如下:
<?php
$greeting = “Hello!”;
$num = 3 + 2;
$num++;
echo “$greeting $num people!”;
?>
显示结果为“Hello!6 people!”。
  PHP对各种运算符及运算规则都有一套完整的规定,如果用户具有C或C++语言的编程背景的话,可以发现一切都得心应手。
   与Perl语言一样,在PHP中,如果在双引号包含的字符串中含有变量的话,该变量将用相应的变量值替换;如果字符串被单引号包含,则不做替换。例如:
<?php
$name = ‘PETER';
$greeting_1 = “Hello, $name!”;
$greeting_2 = ‘Hello, $name!';
echo “$greeting_1n”;
echo “$greeting_2n”;
?>
显示结果为:
Hello, PETER!
Hello, $name!
(注:上述代码中的“n”为换行符,只能在双引号字符串下使用)
 
B. 变量
PHP允许用户象使用常规变量一样使用环境变量。例如,在页面http://www.nba.com/scores/index.html中包含如下代码:
<?php
echo “[$REQUEST_URI]”;
?>
则输出结果为[/scores/index.html]
 
C. 数组
用户在使用PHP创建数组时,可以把数组索引(包括常规索引或关联索引)加入方括号中。例如:
$fruit[0] = ‘banana';
$fruit[1] = ‘apple';
$favorites['animal'] = ‘tiger';
$favorites['sports'] = ‘basketball';
  如果用户在向数组赋值时不指明数组下标,PHP将自动把该对象加入到数组末尾。例如对于上述$fruit数组可以用以下方式赋值而保持结果不变,
$fruit[] = ‘banana';
$fruit[] = ‘apple';
同样,在PHP中,用户还可以根据需要建立多维数组。例如:
$people[‘David'][‘shirt'] = ‘blue';
$people[‘David'][‘car'] = ‘red';
$people[‘Adam'][‘shirt'] = ‘white';
$people[‘Adam'][‘car'] = ‘silver';
在PHP中,用户还可以使用array()函数快速建立数组。例如:
$fruit = array(‘banana',‘apple');
$favorites = array(‘animal' => ‘tiger', ‘sports' => ‘basketball');
或者使用array()函数创建多维数组:
$people = array (‘David' => array(‘shirt' => ‘blue','car' => ‘red'),
‘Adam' => array(‘shirt' => ‘white',‘car' => ‘silver'));
此外,PHP还提供了内置函数count()用于计算数组中的元素数量。例如:
$fruit = array(‘banana', ‘apple');
print count($fruit);
显示结果为2。
 
D. 结构控制
在PHP中,用户可以使用“for”或“while”等的循环结构语句。例如:
for ($i = 4; $i < 8; $i++) {
print “I have eaten $i apples today.n”; }

$i = 4; while ($i < 8) {
print “I have eaten $i apples today.n”;
$i++;
}
返回结果为:
I have eaten 4 apples today.
I have eaten 5 apples today.
I have eaten 6 apples today.
I have eaten 7 apples today.
此外,用户还可以使用“if”和“elseif”等的选择性结构语句。例如:
if ($user_count > 200) {
print “The site is busy right now!”;}
elseif ($user_count > 100) {
print “The site is active right now!”;
else {
print “The site is idle - only $user_count user logged on.”;
}
 
表单处理
  PHP为用户提供了众多方便易用的强大功能。在表单的处理方面,PHP能够自动地将由客户端表单发送的数据赋值给相应变量,从而极大地简化了整个表单的处理过程。
举例来说,用户建立如下表单:
<INPUT TYPE=TEXT NAME=“name” VALUE=“PETER”>
当使用PHP对上述代码进行处理时,PHP自动创建一个名为$name的变量,并将变量值“PETER”赋予该变量。
用户可以直接对PHP创建的变量进行各种操作,例如显示变量值:
echo “Hi $name!”;
或对变量值进行验证:
if ($name == “PETER”) { echo “Please check out your email.”; }
  下面,我们就来看一下如何通过使用PHP创建并处理一个基本的表单。在示例当中,我们将会要求表单的填写者回答几个简短的问题,包括输入表单填写者的姓名,电子邮件地址,完成调查问卷等。
  这里,我们将所要设计的页面按照功能划分成表单显示和表单处理两个功能模块。这样,用户就不必设计两个不同的页面,而只需要在同一个PHP页面中通过逻辑控制显示或处理相应的功能模块。
 
A. 表单显示
我们通过第一个功能模块来实现表单的显示。具体代码为:
<?php
function display_form()
{
global $PHP_SELF;
?>
 
<FORM TARGET=“<?php echo $PHP_SELF; ?>”METHOD=GET>
Name: <INPUT TYPE=TEXT NAME=“name”><br>Favorite Fruit: <INPUT TYPE=RADIO NAME=“fruit” VALUE=“apple”>Apple
<INPUT TYPE=RADIO NAME=“fruit” VALUE=“orange”>Orange
<INPUT TYPE=RADIO NAME=“fruit” VALUE=“banana”>Banana
Favorite Times to Eat Fruit:
<INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“m”>Morning
<INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“n”>Noon
<INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“d”>Dinner
<INPUT TYPE=CHECKBOX NAME=“times[]” VALUE=“l”>Latenight
<INPUT TYPE=HIDDEN NAME=“stage” VALUE= “results”>
<INPUT TYPE=SUBMIT VALUE= “Thanks!”>
</FORM>
 
<?php
}
?>
  上述代码中绝大多数都是创建表单所必需的HTML代码。在此,我们仅对所涉及到的PHP知识做一下简单介绍。
  首先,我们来看一下代码开始处的变量$PHP_SELF。变量$PHP_SELF是PHP中一个很方便的指针,其变量值就是当前页面的URL地址。这样,我们就可以通过在随后的form标签中将TARGET的值设定为$PHP_SELF,实现由该表单页面处理表单的目的。这里,我们使用$PHP_SELF变量而不使用页面的实际地址,是因为通过使用$PHP_SELF变量,我们可以方便对编写的页面代码进行修改和移动,而不必担心在每次改动之后重新输入新的页面地址。
  另外,在使用$PHP_SELF变量时,我们采用了如下方式:
global $PHP_SELF;
这表明代码中的$PHP_SELF变量为全局变量。用户在使用PHP的过程中一定要注意PHP中任何的函数变量都是局部变量。这就意味着任何函数变量的作用域都只局限于包括该变量的函数本身。即使函数外存在同名变量,变量的值也不相同。因此,如果我们没有在代码中以显式方式声明函数变量$PHP_SELF为全局变量具有全局唯一值的话,用户就会发现函数中的变量$PHP_SELF的值将会为空,而不是我们预先所期望的当前页面的URL地址。
  用户可能已经注意到我们将表单复选选项的名称设置为times[]数组,而把单选选项的名称设定为fruit常规变量。这是因为单选选项只允许用户选择唯一一个正确选项,因此fruit变量的值只可能是一个字符串;相反,复选选项则允许用户做多重性选择。如果,用户希望PHP能够保存用户可能作出的所有选择的话,就需要使用数组来保存所有的可能值。按照PHP的语法规则,我们通过在变量名times后面加上方括号,使PHP知道该变量是一个数组变量而不是普通的常规变量。
最后,我们设定了一个名为stage的隐含变量,通过使用该变量,我们可以控制是否显示表单还是处理表单结果。

php基础教程(三)的更多相关文章

  1. SpringCloud2.0 Eureka Client 服务注册 基础教程(三)

    1.创建[服务提供者],即 Eureka Client 1.1.新建 Spring Boot 工程,工程名称:springcloud-eureka-client 1.2.工程 pom.xml 文件添加 ...

  2. mysql基础教程(三)-----增删改、子查询、创建管理表、约束和分页

    插入 INSERT语句语法 从其它表中拷贝数据 • 不必书写 VALUES 子句. • 子查询中的值列表应与 INSERT 子句中的列名对应 update语句 • 可以一次更新多条数据. • 如果需要 ...

  3. MySQL8.0关系数据库基础教程(三)-select语句详解

    1 查询指定字段 在 employee 表找出所有员工的姓名.性别和电子邮箱. SELECT 表示查询,随后列出需要返回的字段,字段间逗号分隔 FROM 表示要从哪个表中进行查询 分号为语句结束符 这 ...

  4. git基础教程(三)

    3.github与git同步 3.1 配置公私钥 3.2 github上建立个人仓库 3.3 本地仓库同步到github #将本地仓库与远端仓库建立连接 #用简写名代替后面的远端连接 git remo ...

  5. SpringCloud2.0 Hystrix Feign 基于Feign实现断路器 基础教程(七)

    1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集 ...

  6. SpringCloud2.0 Feign 服务发现 基础教程(五)

    1.启动[服务中心]集群,即 Eureka Server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集群,即 Eureka Cli ...

  7. SpringCloud2.0 Hystrix Dashboard 断路器指标看板 基础教程(八)

    1.启动基础工程 1.1.启动[服务中心]集群,工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...

  8. SpringCloud2.0 Ribbon 服务发现 基础教程(四)

    1.启动[服务中心]集群,即 Eureka Server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集群,即 Eureka Cli ...

  9. SpringCloud2.0 Hystrix Ribbon 基于Ribbon实现断路器 基础教程(六)

    1.启动[服务中心]集群,工程名:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) 2.启动[服务提供者]集 ...

  10. SpringCloud2.0 Zuul 网关路由 基础教程(十)

    1.启动基础工程 1.1.启动[服务注册中心],工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...

随机推荐

  1. 九、Lambda、正则表达式

    Lambda表达式 只能简化函数式接口的匿名内部类!!!函数式接口:有且仅有一个抽象方法的接口.有@FunctionalInterface的注解的接口就必定是函数式接口. 正则表达式 单字符类 预定义 ...

  2. shell脚本自动过滤尝试多次连接ip并添加到系统黑名单

    #!/bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c | awk '{{ print $2 " ...

  3. word和excel转pdf

    1.下载jacob.jar包  网址:https://sourceforge.net/projects/jacob-project/files/jacob-project/ 2.导入到本地仓库:mvn ...

  4. supervisor(进程管理)

    1.安装程序 yum -y install supervisor 2.路径文件 /etc/supervisord.d /etc/supervisord.conf 3.生成配置. echo_superv ...

  5. 【Java】BigDecimal

    BigDecimal转int类型 BigDecimal a=new BigDecimal(12.88); int b=a.intValue(); System.out.println(b);//b=1 ...

  6. Java基础_字符串比较

    字符串之间的比较 compareTo "==" equals compareTo 示例: compareTo(string) compareToIgnoreCase(String) ...

  7. mt5获取双色球

    string cookie=NULL,headers; char post[],result[]; string ssq=""; string url="http://k ...

  8. 手机、ESP32单片机、MQTT服务器连接实验

    实验目的:通过自己制作的手机APP,连接MQTT服务器,获取ESP32单片机的温湿度信息,控制ESP32单片机上的LED开关. 实验准备: 1.硬件:ESP32开发板(型号不限,esp01s也可以). ...

  9. docker 实现原理

    实现原理 docker虚拟化 的核心是需要解决两个问题,资源隔离与资源限制 虚拟机是通过硬件虚拟化技术,通过一个 hypervisor 层实现对资源的彻底隔离 容器则是通过操作系统级别的虚拟化技术,利 ...

  10. COMMON_FUNC_SPLIT_STRING

    void SplitString(const std::string& s, std::vector<std::string>& v, const std::string& ...