PHP 基础知识

PHP 基础知识


 PHP 简介

PHP 是服务器端脚本语言。

  • PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言。

  • PHP 脚本在服务器上执行。

  • PHP 可免费下载使用。


 PHP 文件是什么

  • PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码

  • PHP 代码在服务器上执行,结果以纯 HTML 形式返回给浏览器

  • 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 文件通常包含 HTML 标签和一些 PHP 脚本代码。

下面,我们提供了一个简单的 PHP 文件实例,它可以向浏览器输出文本 " Hello World! " :

<!DOCTYPE html> 
<html> 
<body> 

<h1>My first PHP page</h1> 

<?php 
  echo "Hello World!"; 
?> 

</body> 
</html>

PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

通过 PHP,有两种在浏览器输出文本的基础指令:echo 和 print


 PHP 注释

<!DOCTYPE html>
<html>
<body>

<?php
// 这是 PHP 单行注释

/*
这是 
PHP 多行
注释
*/
?>

</body>
</html>

 


 PHP 变量

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

 

与代数相类似

  x=5
  y=6
  z=x+y

  在代数中,我们使用字母(如 x),并给它赋值(如 5)。

  从上面的表达式 z=x+y ,我们可以计算出 z 的值为 11。

  在 PHP 中,这些字母被称为变量

变量是用来存储数据的容器

 

与代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。

变量可以是很短的名称(如 x 和 y)或者更具描述性的名称(如 age、carname、totalvolume)。

 

PHP 变量规则

  • 变量以 $ 符号开始,后面跟着变量的名称

  • 变量名必须以字母或者下划线字符开始

  • 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )

  • 变量名不能包含空格

  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

PHP 语句 和 PHP 变量都是区分大小写的 。

 


 创建声明 PHP 变量

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

 

在上面的语句执行中,变量 txt 将保存值 Hello world!,且变量 x 将保存值 5

注释:当您赋一个文本值给变量时,请在文本值两侧加上引号。

 


PHP 是一门弱类型语言

在上面的实例中,我们注意到,不必向 PHP 声明该变量的数据类型。

PHP 会根据变量的值,自动把变量转换为正确的数据类型。

在强类型的编程语言中,我们必须在使用变量前先声明(定义)变量的类型和名称。


PHP 变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。

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

  • local
  • global
  • static
  • parameter

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:

<?php 
$x=5; // 全局变量 

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

myTest(); 

echo "<p>测试函数外变量:<p>"; 
echo "变量 x 为: $x"; 
echo "<br>"; 
echo "变量 y 为: $y"; 
?>

 


PHP global 关键字

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

在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

<?php
$x=5;
$y=10;
 
function myTest()
{
    global $x,$y;
    $y=$x+$y;
}
 
myTest();
echo $y; // 输出 15
?>

 

PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

上面的实例可以写成这样:

<?php
$x=5;
$y=10;
 
function myTest()
{
    $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
} 
 
myTest();
echo $y;
?>

 


Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,请在您第一次声明变量时使用 static 关键字:

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

 


 参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分

<?php
function myTest($x)
{
    echo $x;
}
myTest(5);
?> 

 echoprint 语句

在 PHP 中有两个基本的输出方式: echoprint 

 

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

  提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。


echo输出

echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。

 

echo 命令输出字符串(字符串可以包含 HTML 标签):

<html>
<head>
    <title>PHP 学习</title>
</head>
<body>

<?php
echo "hello world";
echo "<h2> good good study</h2>";
?>

</body>
</html>

    

 

使用 echo 命令输出变量和字符串:

<html>
<head>
    <title>PHP 学习</title>
</head>
<body>

<?php
echo "hello world";
echo "<h2> good good study</h2>";
$name = "wjw";
$age = 18;
// 创建一个数组
$cars = array("volvo","bmw","toyota");
echo $name;
echo "<br>";
echo "I'm {$name}, 我今年{$age}岁了";
echo "<br>";
echo "我的汽车品牌有:{$cars[0]}";
?>

</body>
</html>

    


 print输出

 print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。

 

使用 print 命令输出字符串和变量(字符串可以包含 HTML 标签):

<html>
<head>
    <title>PHP 学习</title>
</head>
<body>

<?php
print "hello world";
print "<h2> good good study</h2>";
$name = "wjw";
$age = 18;
// 创建一个数组
$cars = array("volvo","bmw","toyota");
print $name;
print "<br>";
print "I'm {$name}, 我今年{$age}岁了";
print "<br>";
print "我的汽车品牌有:{$cars[0]}";
?>

</body>
</html> 

   


echo print 语句的区别

  1、echo 可以输出一个或多个字符串;

  2、print 只允许输出一个字符串,返回值总为 1;

  3、echo 输出的速度比 print 快;

  4、echo 没有返回值,print 有返回值 1;


 其他输出方式 

echo()

  可以一次输出多个值,多个值之间用逗号分隔。echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用。

 

print()

   函数print()打印一个值(它的参数),如果字符串成功显示则返回true,否则返回false。

 

print_r()

  可以把字符串和数字简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。但print_r()输出布尔值和NULL的结果没有意义,因为都是打印"\n"。因此用var_dump()函数更适合调试。

 

var_dump()

  判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型。此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

 


  EOF(heredoc) 使用说明

 PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。

 

使用概述:

  • 1. 必须后接分号,否则编译通不过。

  • 2. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。

  • 3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。

  • 4. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。

  • 5. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

 

 案例展示

<html>
<head>
    <title>PHP 学习</title>
</head>
<body>

<?php
echo <<<EOF
    <h1>我是h1标签</h1>
    <h2>我是h2标签</h2>
    <h3>我是h3标签</h3>
EOF;
// 结束需要独立一行且前后不能空格
?>

</body>
</html>

     

 

注意:

  1. 以 <<<EOF 开始标记开始,以 EOF 结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。

  2. 开始标记和结束标记相同,比如常用大写的 EOT、EOD、EOF 来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。

  3. 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在heredoc中,变量不需要用连接符.或,来拼接,如下:  

<html>
<head>
    <title>PHP 学习</title>
</head>
<body>

<?php
$name="runoob";
$a= <<<EOF
    "abc"$name
    "123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

</body>
</html>

    


 PHP 数据类型

  - String (字符串)

  - Integer (整型)

  - Float (浮点型)

  - Boolean (布尔型)

  - Array (数组)

  - Object (对象)

  - NULL (空值)

 


 String - 字符串

<?php
$x = "Hello world!";
echo $x;
echo "<br>";
$y = 'Hello PHP!';
echo $y;
?>

     

 


 Integer - 整型

  整数是一个没有小数的数字。

  整数规则:

    •   整数必须至少有一个数字 (0-9)

    •   整数不能包含逗号或空格

    •   整数是没有小数点的

    •   整数可以是正数或负数

    •   整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

 

<?php
$x = 5985;
//var_dump() 函数返回变量的数据类型和值:
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

       


 Float - 浮点型

浮点数是带小数部分的数字,或是指数形式。

<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>

       


 Boolean - 布尔型

布尔型可以是 TRUEFALSE 

$x=true;
$y=false;

 


 Array  - 数组

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

 

<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>

    


Object - 对象

对象数据类型也可以用于存储数据。

在 PHP 中,对象必须声明。

首先,你必须使用class关键字声明类对象。类是可以包含属性方法的结构。

<?php

class Car
{
    var $color;

    function __construct($color = "green")
    {
        $this->color = $color;
    }

    function what_color()
    {
        return $this->color;
    }
}

?>

 NULL - 空值 

NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。

NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。

<?php
$x="Hello world!";
$x=null;
var_dump($x);
?> 

 PHP - 常量 

常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

注意: 常量在整个脚本中都可以使用。

 

设置常量

 设置常量,使用 define() 函数,函数语法如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) 

该函数有三个参数:

  • name必选参数,常量名称,即标志符。

  • value必选参数,常量的值。

  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。

 

 创建一个 区分大小写的常量

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING;    // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting;   // 输出 "greeting"
?>

 

 创建一个 不区分大小写的常量

<?php
// 不区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com", true);
echo greeting;  // 输出 "欢迎访问 Runoob.com"
?>

 常量是全局的

常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。

以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。

<html>
<head>
    <title>PHP 学习</title>
</head>
<body>

<?php
define("GREETING", "欢迎访问 Runoob.com");

function myTest() {
    echo GREETING;
}

myTest();    // 输出 "欢迎访问 Runoob.com"
?>

</body>
</html>

   

 

posted @ 2018-05-13 09:48  我是+V  阅读(232)  评论(0编辑  收藏  举报