php基础

  • PHP 语法

PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。

  • 基本的 PHP 语法

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

PHP 脚本以 <?php 开始,以 ?> 结束:

<?php
// PHP 代码
?>

PHP 文件的默认文件扩展名是 ".php"。

PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。

<!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 中,这些字母被称为变量。

变量是用于存储数据的容器。

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

PHP 变量规则:

  1. 变量以 $ 符号开始,后面跟着变量的名称
  2. 变量名必须以字母或者下划线字符开始
  3. 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
  4. 变量名不能包含空格
  5. 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
PHP 语句和 PHP 变量都是区分大小写的。
  • 创建(声明)PHP 变量

PHP 没有声明变量的命令。

变量在您第一次赋值给它的时候被创建:

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

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

注释:当您赋一个文本值给变量时,请在文本值两侧加上引号。
  • PHP 是一门弱类型语言

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

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

  • PHP 变量作用域

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

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

  1. local
  2. global
  3. static
  4. 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"; 
    ?>

在上例中 myTest() 函数定义了 $x 和 $y 变量。 $x 变量在函数外声明,所以它是全局变量 , $y 变量在函数内声明所以它是局部变量。

当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 $y 的值,但是不能输出 $x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。

然后我们在myTest()函数外输出两个变量的值,函数将会输出全局部变量 $x 的值,但是不能输出 $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);
    ?>

     

  • PHP echo/print

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

  • PHP echo 和 print 语句

echo 和 print 区别:

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

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

  • PHP echo 语句

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

显示字符串

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

  • <?php
    echo "<h2>PHP is fun!</h2>";
    echo "Hello world!<br>";
    echo "I'm about to learn PHP!<br>";
    echo "This", " string", " was", " made", " with multiple parameters.";
    ?>

显示变量

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

  • <?php
    $txt1="Learn PHP";
    $txt2="w3cschool.cc";
    $cars=array("Volvo","BMW","Toyota");
    echo $txt1;
    echo "<br>";
    echo "Study PHP at $txt2";
    echo "My car is a {$cars[0]}";
    ?>
  • PHP print 语句

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

显示字符串

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

  • <?php
    print "<h2>PHP is fun!</h2>";
    print "Hello world!<br>";
    print "I'm about to learn PHP!";
    ?>

显示变量

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

  • <?php
    $txt1="Learn PHP";
    $txt2="w3cschool.cc";
    $cars=array("Volvo","BMW","Toyota"); 
    print $txt1;
    print "<br>";
    print "Study PHP at $txt2";
    print "My car is a {$cars[0]}";
    ?>

     

  • PHP 运算符

在 PHP 中,赋值运算符 = 用于给变量赋值。

在 PHP 中,算术运算符 + 用于把值加在一起。

  • PHP 算术运算符

运算符

名称

描述

实例

结果

x + y

x 和 y 的和

2 + 2

4

x - y

x 和 y 的差

5 - 2

3

x * y

x 和 y 的积

5 * 2

10

x / y

x 和 y 的商

15 / 5

3

x % y

模(除法的余数)

x 除以 y 的余数

5 % 2
10 % 8
10 % 2

1
2
0

- x

取反

x 取反

- 2

 

a . b

并置

连接两个字符串

"Hi" . "Ha"

HiHa

使用不同算术运算符得到的不同结果:

  • <?php 
    $x=10; 
    $y=6;
    echo ($x + $y); // 输出16
    echo "<br>";
    echo ($x - $y); // 输出4
    echo "<br>";
    echo ($x * $y); // 输出60
    echo "<br>";
    echo ($x / $y); // 输出1.6666666666667
    echo "<br>"; 
    echo ($x % $y); // 输出4 
    ?>

PHP7+ 版本新增整除运算符 intdiv(),例:

<?php
var_dump(intdiv(10, 3));
?>

输出: int(3) 

  • PHP 赋值运算符

在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。

运算符

等同于

描述

x = y

x = y

左操作数被设置为右侧表达式的值

x += y

x = x + y

x -= y

x = x - y

x *= y

x = x * y

x /= y

x = x / y

x %= y

x = x % y

模(除法的余数)

a .= b

a = a . b

连接两个字符串

使用不同赋值运算符得到的不同结果:

  • <?php 
    $x=10; 
    echo $x; // 输出10
    echo "<br>";
    $y=20; 
    $y += 100;
    echo $y; // 输出120
    echo "<br>";
    $z=50;
    $z -= 25;
    echo $z; // 输出25
    echo "<br>";
    $i=5;
    $i *= 6;
    echo $i; // 输出30
    echo "<br>";
    $j=10;
    $j /= 5;
    echo $j; // 输出2
    echo "<br>";
    $k=15;
    $k %= 4;
    echo $k; // 输出3
    ?>

     

使用不同字符串运算符得到的不同结果:

<?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world! 
echo "<br>";
$x="Hello";
$x .= " world!";
echo $x; // 输出Hello world! 
?>

 

  • PHP 递增/递减运算符

运算符

名称

描述

++ x

预递增

x 加 1,然后返回 x

x ++

后递增

返回 x,然后 x 加 1

-- x

预递减

x 减 1,然后返回 x

x --

后递减

返回 x,然后 x 减 1

使用递增/递减运算符得到的结果:

<?php
$x=10; 
echo ++$x; // 输出11
echo "<br>";
$y=10; 
echo $y++; // 输出10
echo "<br>";
$z=5;
echo --$z; // 输出4
echo "<br>";
$i=5;
echo $i--; // 输出5
?>
  • PHP 比较运算符

比较操作符可以比较两个值:

运算符

名称

描述

实例

x == y

等于

如果 x 等于 y,则返回 true

5==8 返回 false

x === y

恒等于

如果 x 等于 y,且它们类型相同,则返回 true

5==="5" 返回 false

x != y

不等于

如果 x 不等于 y,则返回 true

5!=8 返回 true

x <> y

不等于

如果 x 不等于 y,则返回 true

5<>8 返回 true

x !== y

不恒等于

如果 x 不等于 y,或它们类型不相同,则返回 true

5!=="5" 返回 true

x > y

大于

如果 x 大于 y,则返回 true

5>8 返回 false

x < y

小于

如果 x 小于 y,则返回 true

5<8 返回 true

x >= y

大于等于

如果 x 大于或者等于 y,则返回 true

5>=8 返回 false

x <= y

小于等于

如果 x 小于或者等于 y,则返回 true

5<=8 返回 true

使用一些比较运算符得到的不同结果:

<?php
$x=100; 
$y="100"; 
var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x !== $y);
echo "<br>";
$a=50;
$b=90;
var_dump($a > $b);
echo "<br>";
var_dump($a < $b);
?>
  • PHP 逻辑运算符

 

运算符

名称

描述

实例

x and y

如果 x 和 y 都为 true,则返回 true

x=6
y=3
(x < 10 and y > 1) 返回 true

x or y

如果 x 和 y 至少有一个为 true,则返回 true

x=6
y=3
(x==6 or y==5) 返回 true

x xor y

异或

如果 x 和 y 有且仅有一个为 true,则返回 true

x=6
y=3
(x==6 xor y==3) 返回 false

x && y

如果 x 和 y 都为 true,则返回 true

x=6
y=3
(x < 10 && y > 1) 返回 true

x || y

如果 x 和 y 至少有一个为 true,则返回 true

x=6
y=3
(x==5 || y==5) 返回 false

! x

如果 x 不为 true,则返回 true

x=6
y=3
!(x==y) 返回 true

 

  • PHP 数组运算符

运算符

名称

描述

x + y

集合

x 和 y 的集合

x == y

相等

如果 x 和 y 具有相同的键/值对,则返回 true

x === y

恒等

如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true

x != y

不相等

如果 x 不等于 y,则返回 true

x <> y

不相等

如果 x 不等于 y,则返回 true

x !== y

不恒等

如果 x 不等于 y,则返回 true

 

  • 三元运算符

使用一些数组运算符得到的不同结果:

<?php
$x = array("a" => "red", "b" => "green"); 
$y = array("c" => "blue", "d" => "yellow"); 
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
echo "<br>";
var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x <> $y);
echo "<br>";
var_dump($x !== $y);
?>

 

另一个条件运算符是"?:"(或三元)运算符 。

  • 语法格式
(expr1) ? (expr2) : (expr3);

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

以下通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody:

<?php
$test = 'php中文网';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;

// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>

注意:PHP_EOL 是一个换行符,兼容更大平台。

在 PHP7+ 版本多了一个 NULL 合并运算符,如下

<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
  • 组合比较符(PHP7+)

PHP7+ 支持组合比较符,如下:

<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
  • PHP 数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

  • PHP 字符串

一个字符串是一串字符的序列,就像 "Hello world!"。

你可以将任何文本放在单引号和双引号中:

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

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

整数规则:

  1. 整数必须至少有一个数字 (0-9)
  2. 整数不能包含逗号或空格
  3. 整数是没有小数点的
  4. 整数可以是正数或负数
  5. 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。

 PHP var_dump() 函数返回变量的数据类型和值:

  • <?php 
    $x = 5985;
    var_dump($x);
    echo "<br>"; 
    $x = -345; // 负数 
    var_dump($x);
    echo "<br>"; 
    $x = 0x8C; // 十六进制数
    var_dump($x);
    echo "<br>";
    $x = 047; // 八进制数
    var_dump($x);
    ?>

     

  • PHP 浮点型

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

 PHP var_dump() 函数返回变量的数据类型和值:

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

布尔型可以是 TRUE 或 FALSE。

$x=true;
$y=false;

布尔型通常用于条件判断。在接下来的章节中你会学到更多关于条件控制的教程。

  • PHP 数组

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

在下例中创建了一个数组, 然后使用 PHP var_dump() 函数返回数组的数据类型和值:

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

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

在 PHP 中,对象必须声明。

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

然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

  • <?php
    class Car
    {
        var $color;
        function Car($color="green") {
          $this->color = $color;
        }
        function what_color() {
          return $this->color;
        }
    }
    function print_vars($obj) {
       foreach (get_object_vars($obj) as $prop => $val) {
         echo "\t$prop = $val\n";
       }
    }
    // instantiate one object
    $herbie = new Car("white");
    // show herbie properties
    echo "\herbie: Properties\n";
    print_vars($herbie);
    ?>

以上例中PHP关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。

你将会在接下来的章节中学会更多关于对象的知识。

  • PHP NULL

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

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

可以通过设置变量值为 NULL 来清空变量数据:

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

PHP 条件语句

在您编写代码时,经常会希望为不同的决定执行不同的动作。您可以在代码中使用条件语句来实现这一点。

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

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

    if 语句用于在指定条件为 true 时执行代码。

  • 语法

if (条件) {
  当条件为 true 时执行的代码;
}
  • <?php
    $t=date("H");
    
    if ($t<"20") {
      echo "Have a good day!";
    }
    ?>/*将输出 "Have a good day!",如果当前时间 (HOUR) 小于 20:*/

     

  • if...else 语句

    使用 if....else 语句在条件为 true 时执行代码,在条件为 false 时执行另一段代码。

  • 语法

    if (条件) {
      条件为 true 时执行的代码;
    } else {
      条件为 false 时执行的代码;
    }
<?php
$t=date("H");

if ($t<"20") {
  echo "Have a good day!";
} else {
  echo "Have a good night!";
}
?>/*将输出 "Have a good day!",如果当前时间 (HOUR) 小于 20,否则输出 "Have a good night!":
 */
  •  if...elseif....else 语句

    使用 if....elseif...else 语句来选择若干代码块之一来执行。

  • 语法

    if (条件) {
      条件为 true 时执行的代码;
    } elseif (condition) {
      条件为 true 时执行的代码;
    } else {
      条件为 false 时执行的代码;
    }
  • <?php
    $t=date("H");
    
    if ($t<"10") {
      echo "Have a good morning!";
    } elseif ($t<"20") {
      echo "Have a good day!";
    } else {
      echo "Have a good night!";
    }
    ?>/*将输出 "Have a good morning!",如果当前时间 (HOUR) 小于 10,如果当前时间小于 20,则输出 "Have a good day!"。否则将输出 "Have a good night!":*/
  • 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;
}

工作原理:

  1. 对表达式(通常是变量)进行一次计算
  2. 把表达式的值与结构中 case 的值进行比较
  3. 如果存在匹配,则执行与 case 关联的代码
  4. 代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
  5. 如果没有 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";
    }
    ?>
    
    </body>
    </html>

     

  • PHP函数

    PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。

  • PHP 用户定义函数

    除了内建的 PHP 函数,我们可以创建我们自己的函数。

  1. 函数是可以在程序中重复使用的语句块。
  2. 页面加载时函数不会立即执行。
  3. 函数只有在被调用时才会执行。
  • 在 PHP 创建用户定义函数

用户定义的函数声明以关单 "function" 开头:

  • 语法

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

函数名能够以字母或下划线开头(而非数字)。函数名对大小写不敏感。

提示:函数名应该能够反映函数所执行的任务。

  • PHP 函数参数

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

参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。也可以给参数写上固定数值作为默认参数 function fn($num=10){ 被执行的代码;} 

  • PHP 关联数组

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

有两种创建关联数组的方法: $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); 

或者:

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

随后可以在脚本中使用指定键:

  • <?php
    $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
    echo "Peter is " . $age['Peter'] . " years old.";
    ?>
  • 历关联数组

遍历并输出关联数组的所有值,使用 foreach 循环

  • <?php
    $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
    
    foreach($age as $x=>$x_value) {
      echo "Key=" . $x . ", Value=" . $x_value;
      echo "<br>";
    }
    ?>

     




 
 
 
 
 
 
posted @ 2017-05-21 15:09  陈笑笑  阅读(316)  评论(0编辑  收藏  举报