php 基础语法整理

PHP

php是一种后台编程语言;使用php可以开发动态网站和后台接口(所谓接口就是url地址,用于给前端提供数据)。

变量

变量规则

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
  • 注意:

    PHP 是一门弱类型语言,PHP 会根据变量的值,自动把变量转换为正确的数据类型。

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

变量作用域

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

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

  • local

  • global

    用于函数内访问全局变量。

    函数内访问全局变量需要 global 关键字或者使用 $GLOBALS[index] 数组

    <?php
        $a=5;
        $b=3;
        function t1()
        {  
            global $a,$b;
            echo $a-$b;  // 输出 2
        }
        t1();
    
        echo PHP_EOL;
    
        function t2()
        {
            echo $GLOBALS['a']-$GLOBALS['b'];  // 输出 2
        }
        t2();
    ?>
    
  • static

    当一个函数完成时,它的所有变量通常都会被删除。但有时候希望某个局部变量不要被删除,则需要在第一次声明变量时使用 static 关键字,这样每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

    注释:该变量仍然是函数的局部变量。

    <?php
        function myTest()
        {
            static $x=0;
            echo $x;
            $x++;
            echo PHP_EOL;    // 换行符
        }
    
        myTest();  //输入 0 
        myTest();  //输入 1 
        myTest();  //输入 2 
    ?>
    
  • parameter(参数作用域)

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

内容输出

  • echo:输出简单数据类型,如字符串、数值
  • print_r():输出复杂数据类型,如数组
  • var_dump():输出详细信息,如对象、数组

字符串拼接

  • js中字符串拼接用+;php中字符串拼接用.

  • strlen() 函数返回字符串的长度(字节数)

  • strpos() 函数用于在字符串内查找一个字符或一段指定的文本。

    如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

单引号与双引号

  • 单引号中的变量会当作普通字符串处理
  • 双引号中的变量会解析为变量值

数据类型

  • 字符串
  • 整型
  • 浮点型
  • 布尔型
  • 数组
  • NULL
<?php
    $x = "Hello world!";

    $x = 5985;
	$x = -345; // 负数 
	$x = 0x8C; // 十六进制数
	$x = 047; // 八进制数

	$x = 10.365;
	$x = 2.4e3;
	$x = 8E-5;

	$x = true;
	
	$x = array("Volvo","BMW","Toyota");
	
	$x = null;

	var_dump($x)  //返回变量的数据类型和值
?>
  • 对象

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

在 PHP 中,对象必须声明,使用class关键字声明类对象。类是可以包含属性和方法的结构。类中定义数据类型,然后在实例化的类中使用数据类型。

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

    function print_vars($obj) {
       foreach (get_object_vars($obj) as $prop => $val) {
         echo "$prop = $val";
       }
    }

    // 实例一个对象
    $herbie = new Car("white");
    print_vars($herbie);

?> 

条件语句

  • if 语句 - 在条件成立时执行代码
  • if...else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if...elseif....else 语句 - 在若干条件之一成立时执行一个代码块
  • switch 语句 - 在若干条件之一成立时执行一个代码块

elseifelse if 完全同效果,elseif 是 PHP 为 else if 专门做到容错版。更准确更严格到写法为后者: else if

数组

array() 函数 ----- 创建数组

数值数组

带有数字 ID 键的数组

<?php
    //两种创建数值数组的方法:
    // 1.自动分配 ID 键(ID 键总是从 0 开始):
    $cars = array("Volvo","BMW","Toyota");

    // 2.人工分配 ID 键:
    $cars[0] = "Volvo";
    $cars[1] = "BMW";
    $cars[2] = "Toyota";

    //获取数组的长度 
    echo count($cars);

    //遍历 -- for循环
    for($i =0; $i<count($cars); $i++){
        echo $age1[$i];
        echo "<br/>";
    }
?>

关联数组

带有指定的键的数组,每个键关联一个值

<?php
    //两种创建关联数组的方法:
	$age=array("Peter" => "35", "Ben" => "37", "Joe" => "43");
	
	$age['Peter'] ="35";
	$age['Ben'] = "37";
	$age['Joe'] = "43";

	echo $age['Peter'];  // 35

	//遍历 -- foreach循环
	foreach($age as $x => $x_value){
    	echo "Key=" . $x . ", Value=" . $x_value;
    	echo "<br>";
	}
?>

多维数组

包含一个或多个数组的数组

<?php
    // 二维数组:
    $cars = array
    (
        array("Volvo",100,96),
        array("BMW",60,59),
        array("Toyota",110,100)
    );

	echo $cars[0][1]; // 100
?>

数组排序函数

PHP 数组排序函数:

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列
<?php
	$cars=array("Volvo","BMW","Toyota");
	sort($cars);
	print_r($cars);  // Array ( [0] => BMW [1] => Toyota [2] => Volvo )

	$age = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
	asort($age);
	print_r($age); // Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )

	$age2 = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
	ksort($age2);
	print_r($age); // Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
?>

超级全局变量

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

$_POST

  • $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="post"。
<form action="login.php" method="post" >
	name: <input type="text" name="name" >
	password: <input type="password" name="pwd">
	<button type="submit">Login</button>
</form>

// login.php
<?php
	// 根据表单中name属性值获取
	$name = $_POST['name'];
	$pwd = $_POST['pwd'];

	echo $name;
	echo $pwd;

	header("Content-Type:text/html; charset=utf-8"); //设置服务器响应的文件类型,字符集编码
?>

$_GET

  • $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method="get"。

  • $_GET 也可以收集URL中发送的数据。

<?php
    /* url: http://www.test.cc/?name=abc
    $_GET['name'] 得到url地址中传递的参数name的值
    */
    $name = $_GET['name'];
	echo $name;
?>

循环

  • while - 只要指定的条件成立,则循环执行代码块
  • do...while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
  • for - 循环执行代码块指定的次数
  • foreach - 根据数组中每个元素来循环代码块
<?php
    // 使用for循环,实现冒泡排序:
    $arr = array(5,3,6,2,8,10);
    for($i = count($arr)-1;$i>=0;$i--){
        for($j = 0 ; $j < $i ; $j++){
            if($arr[$j+1] > $arr[$j] ){
                $aa = $arr[$j+1];
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $aa;
            }
        }
    }
    print_r($arr);
?>

函数

自定义函数

  • 语法规则(函数名不区分大小写)
<?php
	function foo($name){
		return $name;
	}
 	$name = foo('zhangsan');
	echo $name;
?>

系统函数(内置函数)

  • gettype()
  • json_encode()
posted @ 2020-08-04 21:23  十一是假期啊  阅读(335)  评论(0编辑  收藏  举报