zoukankan      html  css  js  c++  java
  • PHP-基础-1

    基本语法

    显示变量的数据类型和值

    var_dump()

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

    类定义

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

    字符串操作

    strlen() 函数返回字符串的长度,以字符计
    strpos() 函数用于检索字符串内指定的字符或文本
    
    <?php
    echo strpos("Hello world!","world");
    ?>
    #以上代码的输出是:6。
    

    设置常量

    如需设置常量,请使用 define() 函数 - 它使用三个参数:

    1. 首个参数定义常量的名称
    2. 第二个参数定义常量的值
    3. 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。
    #对大小写敏感的常量
    <?php
    define("GREETING", "Welcome to W3School.com.cn!");
    echo GREETING;
    ?>
    #对大小写不敏感的常量
    <?php
    define("GREETING", "Welcome to W3School.com.cn!", true);
    echo greeting;
    ?>
    

    PHP 比较运算符

    PHP 比较运算符用于比较两个值(数字或字符串):

    运算符 名称 例子 结果
    == 等于 $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。
    > 大于 $x > $y 如果 $x 大于 $y,则返回 true。
    < 小于 $x < $y 如果 $x 小于 $y,则返回 true。
    >= 大于或等于 $x >= $y 如果 $x 大于或者等于 $y,则返回 true.
    <= 小于或等于 $x <= $y 如果 $x 小于或者等于 $y,则返回 true。

    PHP 逻辑运算符

    运算符 名称 例子 结果
    and $x and $y 如果 $x 和 $y 都为 true,则返回 true。
    or $x or $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
    xor 异或 $x xor $y 如果 $x 和 $y 有且仅有一个为 true,则返回 true。
    && $x && $y 如果 $x 和 $y 都为 true,则返回 true。
    || $x
    ! !$x 如果 $x 不为 true,则返回 true。

    PHP 数组运算符

    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 条件语句

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

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

    • if 语句 - 如果指定条件为真,则执行代码
    • if...else 语句 - 如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码
    • if...elseif....else 语句 - 选择若干段代码块之一来执行
    • switch 语句 - 语句多个代码块之一来执行
    if (条件) {
      条件为 true 时执行的代码;
    } elseif (condition) {
      条件为 true 时执行的代码;
    } else {
      条件为 false 时执行的代码;
    }
    
    <?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";
    }
    ?>
    

    for&foreach

    <?php 
    for ($x=0; $x<=10; $x++) {
      echo "数字是:$x <br>";
    } 
    ?>
        
    <?php 
    $colors = array("red","green","blue","yellow"); 
    
    foreach ($colors as $value) {
      echo "$value <br>";
    }
    ?>
    

    数组

    1. 数组基础

      <?php
      #定义数组
      $cars=array("Volvo","BMW","SAAB");
      #获取数组长度
      echo count($cars);
      #关联数组(类似于词典)
      $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
      $age['Peter']="35";
      $age['Ben']="37";
      $age['Joe']="43";
      #遍历关联数组
      $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
      
      foreach($age as $x=>$x_value) {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "<br>";
      }
      ?>
      
    2. 数组排序

      • sort() - 以升序对数组排序
      • rsort() - 以降序对数组排序
      • asort() - 根据值,以升序对关联数组进行排序
      • ksort() - 根据键,以升序对关联数组进行排序
      • arsort() - 根据值,以降序对关联数组进行排序
      • krsort() - 根据键,以降序对关联数组进行排序

    超全局变量

    PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

    这些超全局变量是:

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

    $GLOBALS — 引用全局作用域中可用的全部变量

    $GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。

    PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

    <?php 
    $x = 75; 
    $y = 25;
     
    function addition() { 
      $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
    }
     
    addition(); 
    echo $z; 
    ?>
    

    PHP $_SERVER

    $_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息。

    <?php 
    echo $_SERVER['PHP_SELF'];
    echo "<br>";
    echo $_SERVER['SERVER_NAME'];
    echo "<br>";
    echo $_SERVER['HTTP_HOST'];
    echo "<br>";
    echo $_SERVER['HTTP_REFERER'];
    echo "<br>";
    echo $_SERVER['HTTP_USER_AGENT'];
    echo "<br>";
    echo $_SERVER['SCRIPT_NAME'];
    ?>
    

    能够在 $_SERVER 中访问的最重要的元素:

    元素/代码 描述
    $_SERVER['PHP_SELF'] 返回当前执行脚本的文件名。
    $_SERVER['GATEWAY_INTERFACE'] 返回服务器使用的 CGI 规范的版本。
    $_SERVER['SERVER_ADDR'] 返回当前运行脚本所在的服务器的 IP 地址。
    $_SERVER['SERVER_NAME'] 返回当前运行脚本所在的服务器的主机名(比如 www.w3school.com.cn)。
    $_SERVER['SERVER_SOFTWARE'] 返回服务器标识字符串(比如 Apache/2.2.24)。
    $_SERVER['SERVER_PROTOCOL'] 返回请求页面时通信协议的名称和版本(例如,“HTTP/1.0”)。
    $_SERVER['REQUEST_METHOD'] 返回访问页面使用的请求方法(例如 POST)。
    $_SERVER['REQUEST_TIME'] 返回请求开始时的时间戳(例如 1577687494)。
    $_SERVER['QUERY_STRING'] 返回查询字符串,如果是通过查询字符串访问此页面。
    $_SERVER['HTTP_ACCEPT'] 返回来自当前请求的请求头。
    $_SERVER['HTTP_ACCEPT_CHARSET'] 返回来自当前请求的 Accept_Charset 头( 例如 utf-8,ISO-8859-1)
    $_SERVER['HTTP_HOST'] 返回来自当前请求的 Host 头。
    $_SERVER['HTTP_REFERER'] 返回当前页面的完整 URL(不可靠,因为不是所有用户代理都支持)。
    $_SERVER['HTTPS'] 是否通过安全 HTTP 协议查询脚本。
    $_SERVER['REMOTE_ADDR'] 返回浏览当前页面的用户的 IP 地址。
    $_SERVER['REMOTE_HOST'] 返回浏览当前页面的用户的主机名。
    $_SERVER['REMOTE_PORT'] 返回用户机器上连接到 Web 服务器所使用的端口号。
    $_SERVER['SCRIPT_FILENAME'] 返回当前执行脚本的绝对路径。
    $_SERVER['SERVER_ADMIN'] 该值指明了 Apache 服务器配置文件中的 SERVER_ADMIN 参数。
    $_SERVER['SERVER_PORT'] Web 服务器使用的端口。默认值为 “80”。
    $_SERVER['SERVER_SIGNATURE'] 返回服务器版本和虚拟主机名。
    $_SERVER['PATH_TRANSLATED'] 当前脚本所在文件系统(非文档根目录)的基本路径。
    $_SERVER['SCRIPT_NAME'] 返回当前脚本的路径。
    $_SERVER['SCRIPT_URI'] 返回当前页面的 URI。

    PHP $_REQUEST

    PHP $_REQUEST 用于收集 HTML 表单提交的数据。

    下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 action 属性中指定的脚本文件。在这个例子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:

    <html>
    <body>
    
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Name: <input type="text" name="fname">
    <input type="submit">
    </form>
    
    <?php 
    $name = $_REQUEST['fname']; 
    echo $name; 
    ?>
    
    </body>
    </html>
    

    PHP $_POST

    PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

    下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 <form> 标签的 action 属性中指定的文件。在本例中,我们指定文件本身来处理表单数据。如果您希望使用另一个 PHP 页面来处理表单数据,请用更改为您选择的文件名。然后,我们可以使用超全局变量 $_POST 来收集输入字段的值:

    <html>
    <body>
    
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    Name: <input type="text" name="fname">
    <input type="submit">
    </form>
    
    <?php 
    $name = $_POST['fname']; 
    echo $name; 
    ?>
    
    </body>
    </html>
    

    PHP $_GET

    PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。

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

    假设我们有一张页面含有带参数的超链接:

    <html>
    <body>
    
    <a href="test_get.php?subject=PHP&web=W3school.com.cn">测试 $GET</a>
    
    </body>
    </html>
    

    当用户点击链接 "Test $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。

    下面的例子是 "test_get.php" 中的代码:

    <html>
    <body>
    
    <?php 
    echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
    ?>
    
    </body>
    </html>
    

    $_GET VS $_POST

    $_GET 是通过 URL 参数传递到当前脚本的变量数组。

    $_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

    通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。

    GET 可用于发送非敏感的数据。

    注释:绝不能使用 GET 来发送密码或其他敏感信息!

    通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。

    此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。

    不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。

    函数

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

    PHP 用户定义函数

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

    函数是可以在程序中重复使用的语句块。

    页面加载时函数不会立即执行。

    函数只有在被调用时才会执行。

    注释:函数名能够以字母或下划线开头(而非数字)。

    注释:函数名对大小写不敏感。

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

    <?php
    function writeMsg() {
      echo "Hello world!";
    }
    
    writeMsg(); // 调用函数
    ?>
    

    PHP 函数参数

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

    参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。

    <?php
    function familyName($fname) {
      echo "$fname Zhang.<br>";
    }
    
    familyName("Li");
    familyName("Hong");
    familyName("Tao");
    familyName("Xiao Mei");
    familyName("Jian");
    ?>
    #默认参数
    <?php
    function setHeight($minheight=50) {
      echo "The height is : $minheight <br>";
    }
    
    setHeight(350);
    setHeight(); // 将使用默认值 50
    setHeight(135);
    setHeight(80);
    ?>
    

    日期函数

    PHP date() 函数用于对日期或时间进行格式化。

    PHP Date() 函数

    PHP Date() 函数把时间戳格式化为更易读的日期和时间。

    语法

    date(format,timestamp)
    
    参数 描述
    format 必需。规定时间戳的格式。
    timestamp 可选。规定时间戳。默认是当前时间和日期。

    注释:时间戳是一种字符序列,它表示具体事件发生的日期和事件。

    获得简单的日期

    date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。

    下面列出了一些常用于日期的字符:

    • d - 表示月里的某天(01-31)
    • m - 表示月(01-12)
    • Y - 表示年(四位数)
    • 1 - 表示周里的某天

    其他字符,比如 "/", "." 或 "-" 也可被插入字符中,以增加其他格式。

    下面的例子用三种不同方法格式今天的日期:

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

    使用 date() 函数在您的网站上自动更新版本年份:

    © 2010-<?php echo date("Y")?>
    

    下面是常用于时间的字符:

    • h - 带有首位零的 12 小时小时格式
    • i - 带有首位零的分钟
    • s - 带有首位零的秒(00 -59)
    • a - 小写的午前和午后(am 或 pm)

    下面的例子以指定的格式输出当前时间:

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

    注释:请注意 PHP date() 函数会返回服务器的当前日期/时间!

    获得时区

    如果从代码返回的不是正确的时间,有可能是因为您的服务器位于其他国家或者被设置为不同时区。

    因此,如果您需要基于具体位置的准确时间,您可以设置要用的时区。

    下面的例子把时区设置为 "Asia/Shanghai",然后以指定格式输出当前时间:

    <?php
    date_default_timezone_set("Asia/Shanghai");
    echo "当前时间是 " . date("h:i:sa");
    ?>
    

    通过 PHP mktime() 创建日期

    date() 函数中可选的时间戳参数规定时间戳。如果您未规定时间戳,将使用当前日期和时间(正如上例中那样)。

    mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。

    语法

    mktime(hour,minute,second,month,day,year)
    

    下面的例子使用 mktime() 函数中的一系列参数来创建日期和时间:

    <?php
    $d=mktime(9, 12, 31, 6, 10, 2015);
    echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
    ?>
    

    PHP strtotime() 函数

    strtotime() 函数用于把人类可读的字符串转换为 Unix 时间。

    语法

    strtotime(time,now)
    

    下面的例子通过 strtotime() 函数创建日期和时间:

    <?php
    $d=strtotime("10:38pm April 15 2015");
    echo "创建日期是 " . date("Y-m-d h:i:sa", $d);
    ?>
    

    PHP 在将字符串转换为日期这方面非常聪明,所以您能够使用各种值:

    <?php
    $d=strtotime("tomorrow");
    echo date("Y-m-d h:i:sa", $d) . "<br>";
    
    $d=strtotime("next Saturday");
    echo date("Y-m-d h:i:sa", $d) . "<br>";
    
    $d=strtotime("+3 Months");
    echo date("Y-m-d h:i:sa", $d) . "<br>";
    ?>
    

    不过,strtotime() 并不完美,所以请记得检查放入其中的字符串。

    更多日期实例

    下例输出下周六的日期:

    <?php
    $startdate = strtotime("Saturday");
    $enddate = strtotime("+6 weeks",$startdate);
    
    while ($startdate < $enddate) {
      echo date("M d", $startdate),"<br>";
      $startdate = strtotime("+1 week", $startdate);
    }
    ?>
    

    下例输出七月四日之前的天数:

    <?php
    $d1=strtotime("December 31");
    $d2=ceil(($d1-time())/60/60/24);
    echo "距离十二月三十一日还有:" . $d2 ." 天。";
    ?>
    

    文件

    <?php
    $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
    echo fread($myfile,filesize("webdictionary.txt"));
    fclose($myfile);
    ?>
    

    文件会以如下模式之一打开:

    模式 描述
    r 打开文件为只读。文件指针在文件的开头开始。
    w 打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。文件指针在文件的开头开始。
    a 打开文件为只写。文件中的现有数据会被保留。文件指针在文件结尾开始。创建新的文件,如果文件不存在。
    x 创建新文件为只写。返回 FALSE 和错误,如果文件已存在。
    r+ 打开文件为读/写、文件指针在文件开头开始。
    w+ 打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。
    a+ 打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。
    x+ 创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。

    PHP 读取文件 - fread()

    fread() 函数读取打开的文件。

    fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。

    PHP 关闭文件 - fclose()

    fclose() 函数用于关闭打开的文件。

    注释:用完文件后把它们全部关闭是一个良好的编程习惯。您并不想打开的文件占用您的服务器资源。

    fclose() 需要待关闭文件的名称(或者存有文件名的变量)

    PHP 读取单行文件 - fgets()

    fgets() 函数用于从文件读取单行。

    PHP 检查 End-Of-File - feof()

    feof() 函数检查是否已到达 "end-of-file" (EOF)。

    feof() 对于遍历未知长度的数据很有用。

    下例逐行读取 "webdictionary.txt" 文件,直到 end-of-file:

    <?php
    $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
    // 输出单行直到 end-of-file
    while(!feof($myfile)) {
      echo fgets($myfile) . "<br>";
    }
    fclose($myfile);
    ?>
    

    PHP 读取单字符 - fgetc()

    fgetc() 函数用于从文件中读取单个字符。

    PHP 创建文件 - fopen()

    fopen() 函数也用于创建文件。也许有点混乱,但是在 PHP 中,创建文件所用的函数与打开文件的相同。

    如果您用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)。

    PHP 写入文件 - fwrite()

    fwrite() 函数用于写入文件。

    fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。

    <?php
    $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");
    $txt = "Bill Gates
    ";
    fwrite($myfile, $txt);
    $txt = "Steve Jobs
    ";
    fwrite($myfile, $txt);
    fclose($myfile);
    ?>
    

    PHP上传与存储文件

    <?php
    /**
     * Created by IntelliJ IDEA.
     * User: zzd
     * Date: 2018/3/1
     * Time: 13:57
     */
    echo $_FILES["file"]["type"];
    echo $_FILES["file"]["size"];
    if ((($_FILES["file"]["type"] == "image/gif")
            || ($_FILES["file"]["type"] == "image/jpeg")
            || ($_FILES["file"]["type"] == "image/pjpeg"))
        && ($_FILES["file"]["size"] < 300000))
    {
        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 "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
    
            if (file_exists("upload/" . $_FILES["file"]["name"]))
            {
                echo $_FILES["file"]["name"] . " already exists. ";
            }
            else
            {
                move_uploaded_file($_FILES["file"]["tmp_name"],
                    "upload/" . $_FILES["file"]["name"]);
                echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
            }
        }
    
    }
    else
    {
        echo "Invalid file";
    }
    ?>
    
  • 相关阅读:
    设计模式的原则
    命令模式
    访问者模式
    策略模式
    外观模式
    组合模式
    原型模式
    合并有序数组
    判断二叉树是否对称
    中序遍历二叉树
  • 原文地址:https://www.cnblogs.com/fengzzi/p/10044904.html
Copyright © 2011-2022 走看看