首頁 >後端開發 >php教程 >PHP基礎教學七之計算器的實現

PHP基礎教學七之計算器的實現

黄舟
黄舟原創
2017-03-01 09:42:471785瀏覽

本節講解的內容

  • #計算器的實作

  • 超全局變數

  • html中巢狀php程式碼

#前言

PHP語言是開發伺服器端的語言,是對資料的處理,PHP的開發不可避免的要與前台的頁面進行交互,從而進行資料的傳遞。那我們是怎麼從前台取得資料並傳遞到後台的呢?它們利用http協定進行資訊的傳輸。可以看另外一邊部落格http://www.php.cn/。

而今天的計算器的案例,設計到資料的前後台資料的傳輸。它的大致功能是在前台的頁面填寫數據,提交到後台,後台處理完數據,然後返回到前台。

計算器的實作

前台的一個html頁面CalculatingMachine.php

<?php
    $value = isset($_GET[&#39;value&#39;]) ? $_GET[&#39;value&#39;] : &#39;&#39;;
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>计算器的实现</title>
</head>
<style type="text/css">
    .cm{
        text-align:center;
        margin-top:100px;
        line-height:30px;
    }

</style>
<body>
    <p class = &#39;cm&#39;>
    <form action="NumCount.php" method="post">
        数字1:<input type="text" name="num1"><br>
        数字2:<input type="text" name="num2"><br>
        <select name = &#39;oper&#39;>
            <option value = &#39;plus&#39;>+</option>
            <option value = &#39;subtract&#39;>-</option>
            <option value = &#39;multiply&#39;>*</option>
            <option value = &#39;pided&#39;>/</option>
        </select><br>

        <input type="submit" value="计算">
    </form>
    <p><?php echo $value;?></p>
    </p>
</body>
</html>

前台頁面是對使用者的輸入資料透過post傳遞到後台的NumCount.php,在前台的檔案後綴名是php結尾的,這是因為當後台處理的資料傳到前台進行資料的顯示,最重要的一點,以php為後綴名的檔案可以寫html程式碼,但是以html為後綴名的檔案不可以寫php程式碼(可以在設定檔中設定);

後台的處理頁面:NumCount.php

<?php

    //引入运算的函数
    require_once &#39;./function.php&#39;;

    //从html页面得到数据
    $num1 = isset($_POST[&#39;num1&#39;]) ? $_POST[&#39;num1&#39;] : 0;
    $num2 = isset($_POST[&#39;num2&#39;]) ? $_POST[&#39;num2&#39;] : 0;
    $oper = isset($_POST[&#39;oper&#39;]) ? $_POST[&#39;oper&#39;] : &#39;&#39;;

    //判断是否是数字
    if(!is_numeric($num1) || !is_numeric($num2)){
        echo "<script>alert(&#39;请输入数字&#39;)</script>";
        Header("Refresh:0;url = ./CalculatingMachine.php");
    }

    //得到计算后的值
    $value = 0;
    //通过switch判断是那种运算
    switch($oper){
        case &#39;plus&#39;:
            $value = plus($num1,$num2);
            break;
        case &#39;subtract&#39;:
            $value = subtract($num1,$num2);
            break;
        case &#39;multiply&#39;:
            $value = multiply($num1,$num2);
            break;
        case &#39;pided&#39;:
            $value = pided($num1,$num2);
            break;
        default:
            echo &#39;&#39;;
    }

    //把计算后的值传递给前台。
    Header("Refresh:0;url = ./CalculatingMachine.php?value={$value}");

後台的接受頁面,因為是透過post方式進行數據的提交,所以可以透過超全域變數$_POST[]得到數據,並進行數據的驗證,當不是數字的時候,彈出對話框進行提示,並透過header跳到前台。

在後台對資料的操作函數是封裝到了一個檔案中的,透過引入檔案進行使用,

運算的函數封裝到一個檔案中:function.php

<?php

    //加
    function plus($num1,$num2){
        return $num1 + $num2;
    }

    //减
    function subtract($num1,$num2){
        return $num1 - $num2;
    }

    //乘
    function multiply($num1,$num2){
        return $num1 * $num2;
    }

    //除
    function pided($num1,$num2){
        return $num1 / $num2;
    }

前台的頁面:
PHP基礎教學七之計算器的實現

後台處理資料後傳到前台:
PHP基礎教學七之計算器的實現

超全域變數

在上面的後台的程式碼中可以看到接受資料是透過超全域變數$_POST[],進行接受資料的。那麼在PHP中什麼是超全域變量,他們又有什麼作用呢?

PHP 中的許多預定義變數都是“超全域的”,這意味著它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行 global $variable; 就可以存取它們。

PHP中超全局的分類:

  • $GLOBALS 一個包含了全部變數的全域組合 陣列 。變數的名字就是數組的鍵。這表示其在腳本的所有作用域中都是可用的。不需要在函數或方法中用 global $variable; 來存取它。

    <?php
    $a = 12; //整型
    $str = &#39;超全局变量&#39;;
    $arr = array(1,2,3,4); //数组
    
    var_dump($GLOBALS[&#39;a&#39;]);
    echo &#39;<br>&#39;;
    var_dump($GLOBALS[&#39;str&#39;]);
    echo &#39;<br>&#39;;
    var_dump($GLOBALS[&#39;arr&#39;]);

    PHP基礎教學七之計算器的實現

可以看到在上面中超全域變數$GLOBALS自動儲存了程式碼中的變數。

  • $_SERVER 是一個包含了頭資訊(header)、路徑(path)、以及腳本位置(script locations)等等資訊的陣列。這個數組中的項目是由 Web 伺服器所建立。不能保證每個伺服器都提供全部項目;伺服器可能會忽略一些,或提供一些沒有在這裡列舉出來的項目。
    這個超​​全局變數和http協定也有些關係,在這個變數中,我們可以得到我們在進行資料傳輸時的一些資訊。

    <?php
        echo $_SERVER[&#39;SERVER_ADDR&#39;];
        ......结果.......
        127.0.0.1

    上面只是server中的其中一個值而已,得到伺服器的ip位址,別的值可以查看幫助文件。

  • $_GET[]  透過 URL 參數傳遞給目前腳本的變數的陣列。 在網頁的傳輸資料是,常用的有兩種方式,一個GET和一個POST,而這個超全域變數就是保存透過GET方式傳的值

  • $_POST[] 透過HTTP POST 方法傳遞給目前腳本的變數的陣列,當透過POST方式傳遞資料的時候,這個超全域變數就會接受

  • $_REQUEST[],在上面兩個超全域變數根據不同的傳遞方式,儲存不同的值,而這個變數是兩種傳遞方式的數值都會保存。

以下的超全域變數會慢慢介紹

  • $_FILES[] 檔案上傳變量,透過HTTP POST 方式上傳到目前腳本的項目的數組。 在後面的文件上傳時,再詳細介紹。

  • $_COOKIE[] 透過HTTP Cookies 方式傳遞給目前腳本的變數的陣列

  • $_SESSION[] 目前腳本可用SESSION 變數的數組。更多關於如何使用的信息,可以透過 Session 函數進行了解。

上面的就是PHP中的超全域變量,在開發中我們會隨時和他們打交道。

html中嵌入php代码

在上面计算器的前台代码中我们可以看到,当数据处理完传递到前台后,通过在p标签中写php代码来显示数据。从中我们可以看到php是怎么嵌套在html代码中

    <?php code?>

在这里的开发都是php代码和html代码进行嵌套,数据和页面进行一起的开发,什么模式都没用到。

总结

计算机的案列几乎包含了前面的所学,把所有的都化为己用。学习过得知识要学会运用。

 以上就是PHP基础教程七之计算器的实现的内容,更多相关内容请关注PHP中文网(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn