【php】PHP语言进阶

文章目录

索引数组


  1. 两者区别
    在这里插入图片描述
  2. 索引的一般定义

$数组名=array(值1,值2,值3…)

  1. 查看数组的元素的值

第一种方式,使用Print_r函数,来显示数组的值

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

        Print_r($cars);

在这里插入图片描述
第二种方式,数组名[键]

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

        echo "I like  $cars[0], $cars[1] and  $cars[2].";

在这里插入图片描述
4. 增加元素
在这里插入图片描述
5. PHP的数组各元素值可以是不同的数据类型
在这里插入图片描述

关联数组定义


  1. 定义

关联数组可以采用指定的键

<?php

        $cars= array("Volvo"=>10, "BMW"=>5, "SAAB"=>23);

        print_r($cars);

 ?>

在这里插入图片描述
2. 访问关联数据的元素

可以采用:数组名[键]

            $cars= array("Volvo"=>10, "BMW"=>5, "SAAB"=>23);

            echo "Volvo的数量是 $cars[Volvo]";

            echo "</br>";

            echo "BMW的数量是". $cars["BMW"];

在这里插入图片描述

多维数组定义


前面所学习的数组有一个特点:数组都只有一个维度

【实例1】内外层都是索引数组

声明:

    	$cars = array
        (
            array("Volvo",22,18),
            array("BMW",15,13),
            array("Saab",5,2),
            array("Land Rover",17,15)
        );
        print_r($cars);

在这里插入图片描述

此图为:在浏览器中“查看源”的显示结果

访问元素:

数组名[外层键][内层键]

如:$cars[1][0],对应的元素值为“BMW”

【实例2】外层为索引数组,内层为关联数组

1.声明

		$car = array(
            array("品牌"=>"Volvo","库存"=>22,"销量"=>18),
            array("品牌"=>"BMW","库存"=>15,"销量"=>13),
            array("品牌"=>"Land Rover","库存"=>17,"销量"=>15)
        );

        print_r($car);

在这里插入图片描述
2.数组元素访问

$cars[1][“品牌”]结果为: “BMW”

【实例3】两层都是关联数组

		$cars1 = array(
            "Volvo" => array("库存"=>22,"销量"=>18),
            "BMW"=>array("库存"=>15,"销量"=>13),
            "Saab"=>array("库存"=>5,"销量"=>2),
            "Land Rover"=>array("库存"=>17,"销量"=>15),
        );
        print_r($cars1);

在这里插入图片描述

索引数组编历


count()函数

作用:可以用来获得数组的元素个数,函数的参数,就是数组名称。

例1:for 循环实现遍历

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

    $arrlength=count($cars);

    for($x=0;$x<$arrlength;$x++)

    {

        echo $cars[$x];

        echo "<br/>";

    }

在这里插入图片描述

例2:foreach 循环实现遍历

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

        foreach($cars as $value)

        {

            echo $value;

            echo "<br/>";
        }

在这里插入图片描述

关联数组的遍历


两种方式:
1.只需要显示数组元素的值在这里插入图片描述

2.还需要获得每个元素的键在这里插入图片描述

            $cars=array("Volvo"=>21,"BMW"=>22,"SaaB"=>23);

            foreach($cars as $key=>$value)

            {

                echo "$key=>$value <br/>";

            }        

在这里插入图片描述

多维数组的遍历


例1:内外层都是索引数组遍历

    $cars=array(

    array("Volvo",22,18),

    array("BMW",15,13),

    array("Saab",5,2),

    array("Land Rover",17,15)

    );

    $outnum=count($cars);

    for($i=0;$i<$outnum;$i++)

    {

        $innernum=count($cars[$i]);

        for($j=0;$j<$innernum;$j++)

        {

            echo $cars[$i][$j]." ";

        }

        echo "<br/>";

    }

在这里插入图片描述

例2:内外层都是关联数组实例

                $cars = array

                (

                    "Volvo"=>array("库存"=>22,"销量"=>18),

                     "BMW"=>array("库存"=>15,"销量"=>13),

                     "Saab"=>array("库存"=>5,"销量"=>2),

                     "Land Rover"=>array("库存"=>17,"销量"=>15) );

                    foreach($cars as $outKey=>$outValue){

                        echo $outKey.": ";

                        foreach($outValue as $innerKey=>$innerValue){

                            echo $innerKey."=>".$innerValue.",";

                         }

                    echo "<br/>";

                }   

在这里插入图片描述

索引数组的排序


在这里插入图片描述

 <?php

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

        echo "原数组:";

        print_r($cars);

        echo "<br/>";

       

        echo "升序后的数组:";

        sort($cars);

        print_r($cars);

        echo "<br/>";

        

        echo "降序后的数组:";

        rsort($cars);

        print_r($cars);

     ?>

在这里插入图片描述

关联数组的排序


在这里插入图片描述

 $cars=array("Volvo"=>"35","BMW"=>"37","SAAB"=>"43");

 

    echo "按值升序:";

    asort($cars);

    print_r($cars);

    echo "<br/>";

 

    echo "按值降序:";

    arsort($cars);

    print_r($cars);

    echo "<br/>";


    echo "按键升序:";

    ksort($cars);

    print_r($cars);

    echo "<br/>";


    echo "按键降序:";

    krsort($cars);

    print_r($cars);

    echo "<br/>";

在这里插入图片描述

日期函数


  1. 语法格式

date(format,timestamp)

例1-获得日期

在这里插入图片描述

<?php

    echo "今天是 " . date("Y/m/d") . "<br>";

    echo "今天是 " . date("Y.m.d") . "<br>";

    echo "今天是 " . date("Y-m-d") . "<br>";

?>

在这里插入图片描述

例2-获得时间

在这里插入图片描述

    echo "现在时间是 " . date("h:i:sa");

    echo "<br/>";

    echo "现在时间是 " . date("H:i:s");

在这里插入图片描述

需要在这前面自己设置时区,才能变为当前时间

例3:时区设置

    date_default_timezone_set("UTC");

    echo "当前时间是 " . date("h:i:sa")."<br/>";



    date_default_timezone_set("Asia/Shanghai");

    echo "当前时间是 " . date("h:i:sa")."<br/>";

在这里插入图片描述

时间戳

不显示当前时间,要显示其他时间戳

    $d=mktime(9, 12, 31, 6, 10, 2015);

    echo "创建的时间戳是".$d;

    echo "<br/>";

    echo "创建日期是 " . date("Y-m-d h:i:sa", $d);

在这里插入图片描述

字符串函数


1.字符串长度函数-strlen

在这里插入图片描述

2.检索字符串函数-strpos在这里插入图片描述

解释:"Hello world!"的位置从0开始计数,所以 "world"出现的位置序号为6

3.移除左侧字符-ltrim

ltrim(string,charlist)

在这里插入图片描述

同理 rtrim():右移

字符串分隔-explode

explode(separator,string,limit)

可以看到,这个函数内容有三个参数:

第一个参数separator,是必须的,用来规定在哪里分割字符串,或者说以什么字符或者分割符来分割字符串。

第二个参数string,也是必须的,它用来规定要分割哪个字符串。

第三个参数limit是可选的,规定所返回的数组元素的数目。如果省略掉,代表对数组元素不做限制,如果有这个参数,又有几种情况:

(1)如果limit>0则返回包含最多limit个元素的数组,比如limit为2,则返回的数组包含2个元素;

(2)如果limit<0则返回包含除了最后的-limit个元素以外的所有元素的数组,比如limit=-2,则返回减去最后2个元素的数组;

(3)如果limit=0,返回包含一个元素的数组。

$str='one,two,three,four';

 

    //没有limit参数

    $arr=explode(',',$str);

    print_r($arr);

    echo "<br/>";

   

    //limit参数为0

    $arr=explode(',',$str,0);

    print_r($arr);

    echo "<br/>";

    

    //limit参数为正数

    $arr=explode(',',$str,3);

    print_r($arr);

    echo "<br/>";

 

    //limit参数为负数

    $arr=explode(',',$str,-3);

    print_r($arr);

    echo "<br/>";

在这里插入图片描述

数组元素合成字符串-implode

implode(separator,array)

    $arr = array('Hello','World!','I','love','you!');

    echo implode(" ",$arr)."<br>";

    echo implode("+",$arr)."<br>";

    echo implode("-",$arr)."<br>";

    echo implode("X",$arr);

在这里插入图片描述

用户定义函数


同C/C++

表单处理


1.POST表单数据

表单提交

<form action="welcome.php"   method="post">

   Name: <input type="text" name="name"><br>

   E-mail: <input type="text" name="email"><br>

   <input type="submit"  value="提交">

</form>

在这里插入图片描述

  1. “action=“welcome.php””,表示当用户填写此表单并点击提交按钮后,表单数据会发送到名为 “welcome.php” 的PHP文件供处理。

  2. form表单定义了method=“post”,表示表单数据是通过 POST 方法发送的。提交表单的时候,表单中各个表单域的名称和值就以关联数组元素的形式添加到$_POST这个数组中,表单域的名称就是“键”,用户填写的值就是元素的值,这样的话,就可以通过数组元素访问的方式来获得用户在表单中填写的值了。

表单打印
welcome.php页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php

echo "欢迎".$_POST["name"]."<br/>";

echo "你的邮箱是:".$_POST["email"];

?>
</body>
</html>

在这里插入图片描述

2.GET表单数据

    <form action="welcome.php"   method="get">

        Name: <input type="text" name="name"><br>

        E-mail: <input type="text" name="email"><br>

        <input type="submit"  value="提交">

    </form>

在这里插入图片描述

echo "欢迎".$_GET["name"]."<br/>";

echo "你的邮箱是:".$_GET["email"]

在这里插入图片描述

3.两者区别

(1)通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中),而通过 POST 方法从表单发送的信息对其他人是不可见的。
(2)GET 对所发送信息的数量也有限制。限制在小于 2000 个字符,而POST对所发送信息的数量也无限制。

文件打开与读取


readfile()函数

readfile(filename):可以直接读取整个文件,并把它写入输出缓冲。

  1. filename是文件名称。
  2. 若成功,则返回从文件中读入的字节数。若失败,则返回 false。

需要新建一个test.txt,内容写为“124”

<?php

   echo readfile("test.txt");

?>

显示:1243
在这里插入图片描述
在这里插入图片描述

fopen()函数

fopen(filename,mode)

这里有两个参数:

  • 第一个参数:filename,规定要打开的文件。

  • 第二个参数:mode,规定文件的访问类型。

r:只读方式打开,将文件指针指向文件头。

r+:读写方式打开,将文件指针指向文件头。

    $file = fopen("test.txt","r");
    echo $file;

在这里插入图片描述
在这里插入图片描述

 <meta http-equiv="Content-Type" content="text/html;charset=gb2312"/>

fread()函数

fread(file,length)

函数包含两个参数,

  • 第一个参数file规定要读取的打开文件。大家注意这里的file不是指文件名,而是指用fopen打开的文件句柄。

  • 第二个参数length规定要读取的最大字节数。函数在读取完最多 length 个字节数,或到达 EOF 的时候结束。函数结束后返回所读取的字符串,如果出错返回 false。

只读取10个字符

<?php

  $file = fopen("test.txt","r");

  echo fread($file,"10");

  fclose($file);

?>

在这里插入图片描述

<?php

  $file = fopen("test.txt","r");

  echo fread($file,filesize("test.txt"));

  fclose($file);

?>

在这里插入图片描述

注意:

如果不先fopen,效果如下:
在这里插入图片描述

fclose()函数

作用:用完文件后把它们全部关闭是一个良好的编程习惯,这样可释放服务器资源。如果关闭成功则返回 true,否则返回 false。

示例:同上

按行读取–fgets()函数

fgets(file,length):从文件指针中读取一行。

test.txt中
在这里插入图片描述

<?php

  $file = fopen("test.txt","r");

  echo fgets($file);

  fclose($file);

?>

在这里插入图片描述

判断是否到达文件尾函数–feof()

feof(file)

示例:利用这个函数逐行读取文件内容,一直读到文件尾为止。

<?php

    $file = fopen("test.txt", "r");

    //输出文本中所有的行,直到文件结束为止。

    while(! feof($file)){

      echo fgets($file). "<br />";

    }

    fclose($file);

?>

在这里插入图片描述

按字符读取–fgetc()函数

fgetc(file):可以从文件指针中读取一个字符。

读取一个字符

<?php

    $file = fopen("test.txt","r");

    echo fgetc($file);

    fclose($file);

?>

在这里插入图片描述
循环读取字符

<?php

    $file = fopen("test.txt","r");

    while (! feof ($file)){  

           echo fgetc($file). "<br />"; 

      }

    fclose($file);

?>

在这里插入图片描述

文件创建与写入


文件创建–fopen()

可先后用w,w+,a,a+方式打开

w:写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

w+:读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

a:写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

a+:读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

w模式–覆盖模式写入

<?php

    $myfile = fopen("newfile.txt", "w")$txt = "Hello world! \n";

    fwrite($myfile, $txt);

    $txt = "write file test!\n";

    fwrite($myfile, $txt);

    fclose($myfile);

?>

在这里插入图片描述

a模式写入–追加模式写入

<?php

  $myfile = fopen("newfile.txt", "a") or die("文件打开失败!");

  $txt = "Hello world! \n";

  fwrite($myfile, $txt);

  fclose($myfile);

?>

刷新几次,追加写入几次
在这里插入图片描述

注:当fopen()打开文件失败时会执行or后面的die()函数,该函数首先参数内容,作为提示信息,如这里显示“文件打开失败! ”,然后终止程序的运行。

路径(文件夹)创建与删除


1.获得当前路径–getcwd()

<?php

 	echo getcwd();

?>

在这里插入图片描述

2.创建路径–mkdir(path)

path:路径名称字符串。如果创建成功,则返回 true,否则返回 false。

<?php

 mkdir("testing");

?>

在这里插入图片描述

3.改变当前路径–chdir(path)

作用:进入创建的这个路径

<?php

    // 获取当前目录

    echo getcwd() . "<br>";

    // 改变目录

    chdir("testing");

    // 获得当前目录

    echo getcwd();

?>

C:\wamp\www\php\testing中testing是先前已有的,而不是新创的,只是进入了testing路径中
在这里插入图片描述

4.删除路径–rmdir(path)

<?php

        $path = "testing";
        rmdir($path);
?>

testing文件夹被删除

路径打开与读取


打开路径函数–opendir(path)

可以打开一个路径,以便下一步对该路径内容进行读取

        $dir = "/images/";

        $dh = opendir($dir)

关闭路径函数–closedir(dir_handle)

<?php

  $dir = "/images/";

  $dh = opendir($dir)

  ...

  closedir($dh);

 ?>

读取路径–readdir(dir_handle)

$dir = "images";

    $dh = opendir($dir)// 打开目录,然后读取其内容

    while (($file = readdir($dh)) !== false){

        echo $file . "<br>";

     }

    closedir($dh);

此处读了至少两次,所以是两个小圆点。
在这里插入图片描述

文件信息封装到类中–dir(directory)

可以一次性把打开的路径的信息读取到一个类的实例中,就可以使用类的属性和方法进行操作,从而获得路径及文件的详细信息了。

<?php

    $d = dir("images");

    echo $d->path."<br>";

    while (($file = $d->read()) !== false){

      echo $file . "<br>";

    }

    $d->close();

?>

在这里插入图片描述

文件信息放到数组中–scandir(directory,sorting_order)

  • 这里的参数directory必需的,规定要扫描的目录。
  • 参数sorting_order可选,它规定排列顺序。默认是 0,表示按字母升序排列;如果设置为常量DIR_SORT_DESCENDING 或者 1,则表示按字母降序排列;如果设置为 SCANDIR_SORT_NONE,则返回未排列的结果。

在这里插入图片描述

    $dir = "images";

    // 以升序排序 - 默认

    $a = scandir($dir);

    // 以降序排序

    $b = scandir($dir,1);

    print_r($a);

    print_r($b);

在这里插入图片描述

文件上传


   	<form action="upload_file.php" method="post"

    enctype="multipart/form-data">

        <label for="file">文件名称:</label>

        <input type="file" name="file" id="file" />

        <br />

        <input type="submit" name="submit" value="上传" />

    </form>

upload_file.php


<?php

    if ($_FILES["file"]["error"] > 0)

      {

      echo "Error: " . $_FILES["file"]["error"] . "<br />";

      }

    else

      {

      echo "Upload: " . $_FILES["file"]["name"] . "<br />";

      echo "Type: " . $_FILES["file"]["type"] . "<br />";

      echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";

      echo "Stored in: " . $_FILES["file"]["tmp_name"];

      }

?>

在这里插入图片描述

upload_file.php在这里插入图片描述
在这里插入图片描述
解释:

  • enctype="multipart/form-data

这里设置的是“multipart/form-data”, enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要提交二进制数据时,比如文件内容时,就需要使用 "multipart/form-data"这种设置。

  • < input type=“file” name=“file” id=“file” / >

标签的 type=“file” 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。通过它,用户可以在本地主机中选择一个文件。

  • 通过使用 PHP 的超全局数组 $_FILES,可以获得上传文件的相关信息

  • $_FILES[“file”][“name”] - 被上传文件的名称

  • $_FILES[“file”][“type”] - 被上传文件的类型

  • $_FILES[“file”][“size”] - 被上传文件的大小,以字节计

  • $_FILES[“file”][“tmp_name”] - 存储在服务器的文件的临时副本的名称

  • $_FILES[“file”][“error”] - 由文件上传导致的错误代码

移动文件

move_uploaded_file(源文件,目标文件)

上传的文件内容在服务器的 PHP 临时文件夹创建了一个被上传文件的临时副本,这个临时的复制文件会在脚本结束时消失。要保存被上传的文件到指定路径,需要使用此函数

加上以下代码:

move_uploaded_file(

$_FILES["file"]["tmp_name"], 

"images/" . $_FILES["file"]["name"]);

文件类型限制

对$_FILES[“file”][“type”]判断

示例:(对文件大小判断)

if($_FILES["file"]["size"] < 20000)

{

...

}

PHP cookie


经常会发现用户名已经自动填写在用户名填写框中了,也就是说上次登录的用户名,这就和WEB端的程序设置了cookie,有关系。

创建cookie

setcookie(name, value, expire, path, domain);

  • name:必需。规定 cookie 的名称。
  • value:必需。规定 cookie 的值。
  • expire:可选,规定 cookie 的有效期。
  • path:可选。规定 cookie 的服务器路径。
  • domain 可选。规定 cookie 的域名。
<?php

    $value = "my cookie value";

    // 发送一个简单的 cookie

    setcookie("TestCookie",$value);

  ?>

取回cookie

采用$_COOKIE这个超全局数组变量取回cookie的值

<?php

    // 输出个别的 cookie

    echo $_COOKIE["TestCookie"];

    echo "<br />";

    // 输出所有 cookie

    print_r($_COOKIE);

  ?>

判断cookie是否存在

isset(var): 检测变量是否设置。

<?php

        if (isset($_COOKIE["TestCookie"]))

            echo "Welcome " . $_COOKIE["TestCookie"];

        else

            echo "Welcome guest!<br />";
  ?>

删除cookie

<?php

print_r($_COOKIE);
setcookie("TestCookie", "",time() - 3600);      
?>

此时再打印,显示语法错误

PHP session


主要函数:session_start();
cookie是将数据保存在客户机上,而session是直接保存到服务器上。

创建session及取回

<?php

    session_start();

    //存储session变量

    $_SESSION['views']=1;

    echo  $_SESSION['views'];

    echo "<br />";

     

    $_SESSION['user']="曹老师";

    echo  $_SESSION['user'];

    echo "<br />";

    print_r($_SESSION);

?>

在这里插入图片描述

删除session

<?php

 print_r($_SESSION);

 echo "<br />";

 unset($_SESSION['views']);

 echo  $_SESSION['views'];

 session_destroy();

 print_r($_SESSION);

?>

在这里插入图片描述

unset():可以删除某个session
session_destroy():删除所有session,释放内存

其他


  1. 注意多维数组后面的; 不要忘记!
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值