PHP 入门

PHP是一种服务器端脚本语言。

那么什么是服务器端脚本语言?
那么先从脚本说起:
脚本来自英文的script。
script is a computer program written in a scripting language.
(翻译:脚本是使用一种描述性语言编写的计算机可执行文件。)

脚本简单地说就是一条条的文字命令,这些文字命令是可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。
常见的脚本语言有:服务器端脚本语言,和客户端脚本语言。

常见的服务器端脚本语言有:php,jsp,asp。这些语言会在服务器端被解析。
常见的客户端脚本有: javascript,perl等等,这些语言会在客户端被解析。
 

服务器是什么?

它是提供计算服务的设备。

好了,再讲就走远了。总之php是一种在服务器端执行的一种语言。

想象一下一个中型网站大约有几千个链接地址,开发者总不能为每一个地址增加一个页面吧。
服务器脚本从底层抽象出逻辑(可以说是一个有固定算法的模版)。
于是多个用户提交一个请求,大家享用了共同的逻辑处理方式,但是因为我提交的请求不一样,所以相应处理也会不同,于是返回内容也就不同。

但最终是减少了大量的重复代码。
而这逻辑处理中的模版文件可以由php编写。
被请求的数据,是被保存在数据库当中的。
那么用户访问一个页面,最终看到的是由数据库里的相关数据结合相应逻辑文件在服务器的解析器的解析下的产生的内容。
而这个页面不是真正存在于服务器上的固有文件。

服务器脚本运行于服务器上,你永远看不到服务器脚本的内容,得到的只有脚本解释器发回的HTML代码,浏览器对它照盘接收。
客户端脚本脱离服务器运行,不直接执行数据库操作。它实现了客户端上的简单逻辑。

好了,讲了这么多,下面进入正题。

由于php是基于服务器端的一种脚本语言。所以,一定要在服务器环境下运行php文件。
为了在本地电脑上或者服务器的相关功能,我们开发者(初学者),可以在本地电脑上安装服务器那件安装包。
这里推荐phpstudy。
phpstudy网站地址:http://www.phpstudy.net/

该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有32M,有专门的控制面板。总之学习PHP只需一个包。
对学习PHP的新手来说,WINDOWS下环境配置是一件很困难的事;对老手来说也是一件烦琐的事。因此无论你是新手还是老手,该程序包都是一个不错的选择。
全面适合 Win2000/XP/2003/win7/win8/win2008/win10 操作系统 ,支持Apache、IIS、Nginx和LightTPD。

什么是 PHP 文件?
那么php能做什么呢?
PHP注释
<?php
// 这是单行注释
# 这也是单行注释
/*
这是多行注释块
它横跨了
多行
*/
?>
PHP对大小写的敏感度

在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感。
在下面的例子中,所有这三天 echo 语句都是合法的(等价):

<?php
ECHO "Hello";
echo "Hello";
EcHo "Hello";
?>

不过在 PHP 中,所有变量都对大小写敏感。
在下面的例子中,只有第一条语句会显示 $color 变量的值(这是因为 $color、$COLOR 以及 $coLOR 被视作三个不同的变量):

<?php
$color="red";
echo "My car is " . $color . "<br>";
echo "My house is " . $COLOR . "<br>";
echo "My boat is " . $coLOR . "<br>";
?>

好了,讲到这里,大家很可能对代码产生疑问了。这都是什么跟什么?

PHP如何输出内容
<?php
echo "Hello!";
?>

这样,输出的内容就是Hello
注意:所有的php代码一定要写在

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

里。
 

在 PHP 中,有两种基本的输出方法:echo 和 print。
在实际使用中, print 和 echo 两者的功能几乎是完全一样。可以这么说,凡是有一个可以使用的地方,另一个也可以使用。
但是,两者之间也还是一个非常重要的区别:
在 echo 函数中,可以同时输出多个字符串,
而在 print 函数中则只可以同时输出一个字符串。

(1) echo可以输出多个字符串,像下面这样:

echo 'a','b','c';

但是print是不可以的。
看看如下代码:

<?php
$a='hello';
$b='php world!';
echo $a,$b.'<br />'; //echo 可以用逗号分隔字符串变量来显示
print $a.$b.'<br />'; //而print不能使用逗号,只能用点号分隔,
print $a,$b.'<br />'; //这里使用逗号时报错。
?>
PHP变量

变量是存储信息的容器:

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

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

最终输出值为:11

PHP 没有创建变量的命令。比如js创建变量时以var开头。而php没有。变量会在首次为其赋值时被创建。如上例。 

PHP 变量作用域

PHP 有三种不同的变量作用域:
local(局部)
global(全局)
static(静态)

<?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";
?>

在上例中,有两个变量 $x 和 $y,以及一个函数 myTest()。$x 是全局变量,因为它是在函数之外声明的,而 $y 是局部变量,因为它是在函数内声明的。
如果我们在 myTest() 函数内部输出两个变量的值,$y 会输出在本地声明的值,但是无法输出 $x 的值,因为它在函数之外创建。
然后,如果在 myTest() 函数之外输出两个变量的值,那么会输出 $x 的值,但是不会输出 $y 的值,因为它是局部变量,并且在 myTest() 内部创建。
注释:您可以在不同的函数中创建名称相同的局部变量,因为局部变量只能被在其中创建它的函数识别。

PHP global 关键词

global 关键词用于访问函数内的全局变量。
要做到这一点,请在(函数内部)变量前面使用 global 关键词:

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

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

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

PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
上面的例子可以这样重写:

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

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

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

PHP static 关键词

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

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

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

?>

然后,每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
注释:该变量仍然是函数的局部变量。