PHP 学习笔记(一):基础教程:语法,变量,函数,数组,超全局

PHP简介

PHP 脚本在服务器上执行

什么是 PHP 文件

  • PHP 文件能够包含文本、HTML、CSS 以及 PHP 代码
  • PHP 代码在服务器上执行,而结果以纯文本返回浏览器
  • PHP 文件的后缀是 “.php”

PHP能够做什么

  • PHP 能够生成动态页面内容
  • PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件
  • PHP 能够接收表单数据
  • PHP 能够发送并取回 cookies
  • PHP 能够添加、删除、修改数据库中的数据
  • PHP 能够限制用户访问网站中的某些页面
  • PHP 能够对数据进行加密

通过 PHP,您可以不受限于只输出 HTML。您还能够输出图像、PDF 文件、甚至 Flash 影片。您也可以输出任何文本,比如 XHTML 和 XML。

为什么使用 PHP

  • PHP 运行于各种平台(Windows, Linux, Unix, Mac OS X 等等)
  • PHP 兼容几乎所有服务器(Apache, IIS 等等)
  • PHP 支持多种数据库
  • PHP 是免费的。请从官方 PHP 资源下载:www.php.net
  • PHP 易于学习,并可高效地运行在服务器端

PHP语法

基础PHP语法

PHP 脚本可放置于文档中的任何位置。

PHP 脚本以

<?php
// 此处是 PHP 代码
?>

PHP 语句以分号结尾(;)。PHP 代码块的关闭标签也会自动表明分号(因此在 PHP 代码块的最后一行不必使用分号)。

PHP 中的注释

PHP 代码中的注释不会被作为程序来读取和执行。它唯一的作用是供代码编辑者阅读。

PHP支持三种注释

  1. 单行注释 //
  2. 单行注释 #
  3. 多行注释 /**/
<!DOCTYPE html>
<html>
<body>

<?php
// 这是单行注释

# 这也是单行注释

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

</body>
</html>

PHP中的大小写敏感问题

在 PHP 中,所有用户定义的函数关键词(例如 if、else、echo 等等)都对大小写不敏感

不过在 PHP 中,所有变量都对大小写敏感

PHP变量

  • 变量以 $ 符号开头,其后是变量的名称
  • 变量名称必须以字母或下划线开头
  • 变量名称不能以数字开头
  • 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
  • 变量名称对大小写敏感(y与Y 是两个不同的变量)

创建 PHP 变量

PHP 没有创建变量的命令。

变量会在首次为其赋值时被创建(意思就是不给其赋值的时,即没被创建):

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

PHP 变量作用域

在 PHP 中,可以在脚本的任意位置对变量进行声明。

变量的作用域指的是变量能够被引用/使用的那部分脚本。

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

  • local(局部)
  • global(全局)
  • static(静态)

Local 和 Global 作用域

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

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

下面的例子测试了带有局部和全局作用域的变量:

<?php
$x=5; // 全局作用域

function myTest() {
  $y=10; // 局部作用域
  echo "<p>测试函数内部的变量:</p>";
  echo "变量 x 是:$x";
  echo "<br>";
  echo "变量 y 是:$x";
} 

myTest();

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

PHP global 关键词

global 关键词用于访问函数内的全局变量。

要做到这一点,请在(函数内部)变量前面使用 global 关键词

<?php
$x=5;
$y=10;

function myTest() {
  global $x,$y;
  $y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

PHP static 关键词

通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要更进一步的工作

要完成这一点,请在您首次声明变量时使用 static 关键词

<?php

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

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

?>

然后,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息

PHP 5 echo 和 print 语句

echo 和 print 之间的差异:

  • echo - 能够输出一个以上的字符串
  • print - 只能输出一个字符串,并始终返回 1

提示:echo 比 print 稍快,因为它不返回任何值。

PHP echo 语句

echo 是一个语言结构,有无括号均可使用:echo 或 echo()。

PHP print 语句

print 也是语言结构,有无括号均可使用:print 或 print()。

PHP数据类型

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

PHP 字符串

字符串是字符序列,比如 “Hello world!”。

字符串可以是引号内的任何文本。您可以使用单引号或双引号:

PHP 整数

整数是没有小数的数字。

PHP 浮点数

浮点数是有小数点或指数形式的数字。

在下面的例子中,我们将测试不同的数字。PHP var_dump() 会返回变量的数据类型和值

PHP 逻辑

逻辑是 true 或 false。

PHP 数组

数组在一个变量中存储多个值。

PHP 对象

对象是存储数据和有关如何处理数据的信息的数据类型。

在 PHP 中,必须明确地声明对象。

首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。

然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型:

<?php
class Car
{
  var $color;
  function Car($color="green") {
    $this->color = $color;
  }
  function what_color() {
    return $this->color;
  }
}
?>

PHP 字符串函数

PHP strlen() 函数

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

下例返回字符串 “Hello world!” 的长度:

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

PHP strpos() 函数

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

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

下例检索字符串 “Hello world!” 中的文本 “world”:

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

以上代码的输出是:6。

提示:上例中字符串 “world” 的位置是 6。是 6(而不是 7)的理由是,字符串中首字符的位置是 0 而不是 1。

PHP 常量

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

有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。

设置 PHP 常量

如需设置常量,请使用 define() 函数 - 它使用三个参数:

  1. 首个参数定义常量的名称
  2. 第二个参数定义常量的值
  3. 可选的第三个参数规定常量名是否对大小写敏感。默认是 false。

下例创建了一个对大小写敏感的常量,值为 “Welcome to W3School.com.cn!”:

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

下例创建了一个对大小写不敏感的常量,值为 “Welcome to W3School.com.cn!”:

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

PHP 运算符

PHP 算数运算符

PHP 赋值运算符

PHP 赋值运算符用于向变量写值。

PHP 中基础的赋值运算符是 “=”。这意味着右侧赋值表达式会为左侧运算数设置值。

PHP 字符串运算符

PHP 递增/递减运算符

PHP 比较运算符

PHP 比较运算符用于比较两个值(数字或字符串):

PHP 逻辑运算符

PHP 数组运算符

PHP 数组运算符用于比较数组:

PHP 条件语句

在 PHP 中,我们可以使用以下条件语句:

  • if 语句 - 如果指定条件为真,则执行代码
  • if…else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
  • if…elseif….else 语句 - 选择若干段代码块之一来执行
  • switch 语句 - 语句多个代码块之一来执行

PHP 循环语句

在 PHP 中,我们有以下循环语句:

  • while - 只要指定条件为真,则循环代码块
  • do…while - 先执行一次代码块,然后只要指定条件为真则重复循环
  • for - 循环代码块指定次数
  • foreach - 遍历数组中的每个元素并循环代码块

PHP函数

在 PHP 创建用户定义函数

用户定义的函数声明以关键字”function” 开头:

function functionName() {
  被执行的代码;
}

PHP 函数参数

可以通过参数向函数传递信息。参数类似变量。

<?php
function familyName($fname) {
  echo "$fname Zhang.<br>";
}

familyName("Li");
familyName("Hong");
familyName("Tao");
familyName("Xiao Mei");
familyName("Jian");
?>

PHP 默认参数值

下面的例子展示了如何使用默认参数。如果我们调用没有参数的 setHeight() 函数,它的参数会取默认值:

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

setHeight(350);
setHeight(); // 将使用默认值 50
setHeight(135);
setHeight(80);
?>

PHP 函数 - 返回值

如需使函数返回值,请使用 return 语句

PHP数组

数组能够在单独的变量名中存储一个或多个值。

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

在 PHP 中创建数组

在 PHP 中, array() 函数用于创建数组:

array();

PHP 索引数组

有两种创建索引数组的方法:

索引是自动分配的(索引从 0 开始):

$cars=array("Volvo","BMW","SAAB");

或者也可以手动分配索引:

$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="SAAB";

PHP 关联数组

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

有两种创建关联数组的方法:

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

或者:

$age[‘Peter‘]="35";
$age[‘Ben‘]="37";
$age[‘Joe‘]="43";

遍历关联数组

如需遍历并输出关联数组的所有值,您可以使用 foreach 循环,就像这样:

<?php
$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");

foreach($age as $x=>$x_value) {
  echo "Key=" . $x . ", Value=" . $x_value;
  echo "<br>";
}
?>

PHP 数组排序

  • sort() - 以升序对数组排序
  • rsort() - 以降序对数组排序
  • asort() - 根据值,以升序对关联数组进行排序
  • ksort() - 根据键,以升序对关联数组进行排序
  • arsort() - 根据值,以降序对关联数组进行排序
  • krsort() - 根据键,以降序对关联数组进行排序

PHP超全局

超全局变量 在 PHP 4.1.0 中引入,是在全部作用域中始终可用的内置变量

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

这些超全局变量是:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

$GLOBALS — 引用全局作用域中可用的全部变量

$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。

PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

下面的例子展示了如何使用超级全局变量 $GLOBALS:

<?php
$x = 75;
$y = 25;

function addition() {
  $GLOBALS[‘z‘] = $GLOBALS[‘x‘] + $GLOBALS[‘y‘];
}

addition();
echo $z;
?>

结果是:95

PHP $_SERVER

$_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。

下面的例子展示了如何使用 $_SERVER 中的某些元素:

<?php
echo $_SERVER[‘PHP_SELF‘];
echo "<br>";
echo $_SERVER[‘SERVER_NAME‘];
echo "<br>";
echo $_SERVER[‘HTTP_HOST‘];
echo "<br>";
echo $_SERVER[‘HTTP_REFERER‘];
echo "<br>";
echo $_SERVER[‘HTTP_USER_AGENT‘];
echo "<br>";
echo $_SERVER[‘SCRIPT_NAME‘];
?>

运行结果:

下表列出了您能够在 $_SERVER 中访问的最重要的元素:

PHP $_REQUEST

PHP $_REQUEST 用于收集 HTML 表单提交的数据

下面的例子展示了一个包含输入字段及提交按钮的表单。

当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 标签的 action 属性中指定的脚本文件。

在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。

然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:

<html>
<body>

<form method="post" action="<?php echo $_SERVER[‘PHP_SELF‘];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
$name = $_REQUEST[‘fname‘];
echo $name;
?>

</body>
</html>

PHP $_POST

PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:

<html>
<body>

<form method="post" action="<?php echo $_SERVER[‘PHP_SELF‘];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>

<?php
$name = $_POST[‘fname‘];
echo $name;
?>

</body>
</html>

运行结果和$_REQUEST相同

PHP $_GET

PHP GET也可用于收集提交HTML表单(method=”get”)之后的表单数据。_GET 也可以收集 URL 中的发送的数据。

<html>
<body>

<?php
echo "Study " . $_GET[‘subject‘] . " at " . $_GET[‘web‘];
?>

</body>
</html>
时间: 2024-10-11 17:20:00

PHP 学习笔记(一):基础教程:语法,变量,函数,数组,超全局的相关文章

scala快速学习笔记(一):变量函数,操作符,基本类型

为了用spark,先学下scala. 参考教程:http://meetfp.com/zh/scala-basic 在线编译:http://meetfp.com/tryout 其它资料:http://scalachina.com/node/16 http://blog.csdn.net/mapdigit/article/details/21878083 特点: Scala是一种纯面向对象的语言,一切都是对象:将原始类型和类统一起来,同时也将函数和操作符统一起来. Scala又是函数式语言,这体现在

W3Cschool学习笔记&mdash;&mdash;HTML基础教程

什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (markup language) 标记语言是一套标记标签 (markup tag) HTML 使用标记标签来描述网页 HTML 水平线 <hr /> 标签在 HTML 页面中创建水平线. hr 元素可用于分隔内容. <p>This is a paragraph</p> <

[JavaScript] 学习笔记-JavaScript基础教程

1.JavaScript介绍 1)JavaScript是互联网上最流行的脚本语言,这门语言可用于Web和HTML,更可广泛用于服务器.pc端.移动端.JavaScript是一种轻量级的编程语言,插入HTML后,可由所有的浏览器执行 2)HTML中的脚本必须位于<script></script>标签之间:脚本可被放置于HTML页面的<head>和<body>部分中(通常把脚本放在<head>标签中,以不干扰页面的内容) 3)在HTML中,不限制脚本

python基础学习笔记——Python基础教程(第2版 修订版)第十章(充电时刻)

#模块 #包 #模块中有什么 dir l列出特性 #文档 print range.__doc__ #阅读源代码 print copy.__file__ #标准库 sys os fileinput #集合,堆和双端队列 set(range(10)) 集合 堆 数据结构 没有独立的 只有一个包含一些堆操作的模块,叫做heapq(6个函数) 双端队列 #time #random #shelve #re #包含对正则表达式的支持

go语言 新手学习笔记 go基础教程

目前这方面的资料相对较少,自己手动整理汇集. 第一章:安装 第一节:下载go语言 第二节:windows 安装 go语言 第三节: 第二章:结构

python基础学习笔记——Python基础教程(第2版 修订版)第八章(异常)

#异常 类 #捕捉 try try: x=input(sds) y=input(sd) print x/y except ZeroDivisionError print(0sdf) except TypeErrpr except (ZeroDivisionError,TYpeError) #捕捉对象 except(Zerosion.)as e: print(e) #finally

python基础学习笔记——Python基础教程(第2版 修订版)第一章

#模块 import math math.floor(9) from math import sqrt sqrt(9) #无需使用前缀 import cmath cmath.sqrt(-1) #不能使用from...inport #转义和单双引号 >>>"\"hello,word\"she said" '"hello,word"she said' #使用print不显示引号 #拼接字符串  + #输入 input raw_inp

python基础学习笔记——Python基础教程(第2版 修订版)第12章(图形用户界面)

#丰富的平台 Tkinter wxpython ..... #wxpython import wx app=wx.App() win=wx/Frame(None) win.Show() app.MainLoop() #增加按钮a app=wx.App() win=wx.Frame(None) btn=wx.Button(win) win.Show() app.MainLoop() win=wx.Frame(None,title="simple Editor") loadButton=w

python基础学习笔记——Python基础教程(第2版 修订版)第三章(字符串)

#字符串 '%s plus %s equals %s'%(1,2,3) %10f %pi %10.2f %5s %'guido van poee %.*s %(5,'gjffuygv')%010.2 0000003.14%-10.2f #字符串方法 string.letters 包含所有字母的字符串 #find    title.find("sdf")  没有返回-1 #join  添加元素 #lower #replace("isj,"ss") #'1+2

python基础学习笔记——Python基础教程(第2版 修订版)第二章(列表和元祖)

#列表可修改,元祖不能 A=['sdsd',43] B=['sds',45] C=[A,B] #分片 : - #list函数 #分片赋值 #列表方法 lst.append(4) x.count(1) x.count([1,2]) a.extend(b) a.index("w") a.insert(3,"都")x.removex.reversex.sort #pop 移除列表元素,并返回值.实现数据结构-栈,LIFO(后进先出),x.append(x.pop()),先