這裡想和大家示範一下如何查詢貨運訂單是否存在
還有算出帳款是否剛好,沒有的話是收多還收少
首先,我們先做一個查詢訂單的畫面,並查詢訂單1001是否存在
HTML:
<form action="PHP的檔案位置 " method="POST">
    <table class="table_container">
        <tr>
            <td>請輸入要查詢的訂單</td>
            <td><input type="text" name="order_search"></td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="確認"></td>
        </tr>
    </table>
</form>
CSS:
.table_container {
    background-color:rgb(251, 192, 81);
    border:solid 1px #fff;
    width:330px;
    height:70px;
}
.table_container td{
    text-align:center;
    font-weight:bolder;
}
把訂單資料印出來,方便我們查看結果是否正確
可以注意看我在程式碼內下的註解
PHP:
//宣告客戶訂單資料
$order_list = array('1001' => 900, 
                    '1002' => 500, 
                    '1003' => 650, 
                    '1004' => 310, 
                    '1005' => 460, 
                    '1006' => 800, 
                    '1007' => 120, 
                    '1008' => 200,
                    '1009' => 770);
//宣告貨運訂單資料
$order_receive = array('1001' => 900, 
                        '1002' => 300, 
                        '1003' => 0, 
                        '1004' => 310, 
                        '1005' => 460,  
                        '1007' => 120, 
                        '1008' => 500,
                        '1009' => 770,
                        '1110' => 380);
//接收HTML傳來的訂單號碼
$order_search = @$_POST['order_search'];
//判斷$order_search是否為空值
//若是,則提醒輸入訂單號碼
if (!empty($order_search)) {
    //印出客戶訂單資料
    echo "客戶訂單資料:<br>";
    foreach($order_list as $list_key => $list_value) {
        echo $list_key."的金額為".$list_value.'<br>';
    }
    
    echo '<br>';
    //印出貨運訂單資料
    echo "貨運訂單資料:<br>";
    foreach($order_receive as $receive_key => $receive_value) {
        echo $receive_key."的金額為".$receive_value.'<br>';
    }
    echo '<br>';
    echo "貨運訂單查詢結果如下:<br><br>";
    //查看此訂單是否在「貨運」訂單內
    if (array_key_exists($order_search, $order_receive)) {
        echo "貨運訂單".$order_search."存在<br>";
        echo "訂單金額為".$order_receive[$order_search]."元<br>";
        //查看此訂單是否存在於「客戶」訂單內
        //若在,則計算誤差金額為何,否則提醒此訂單為多收的訂單
        if (array_key_exists($order_search, $order_list)) {
            $order_diff_money = $order_list[$order_search] - $order_receive[$order_search];
            echo "誤差金額為".$order_diff_money."元<br>";
        } else {
            echo "注意:此訂單為多收的訂單!!";
        }
    } else {
        echo "查無".$order_search."這個訂單<br>";
    }
} else {
    echo "請輸入訂單號碼!!";
}
結果如下圖所示:
可以看到訂單1001在貨運訂單內是存在的,且金額正確
查詢訂單1002則顯示:
查詢訂單1003則顯示:
查詢訂單1006則顯示:
查詢訂單1008則顯示:
查詢訂單1110則顯示:
也可以找出貨運沒收到的「訂單」,和貨運沒收到「貨款」的訂單
PHP:
//用array_diff_key取key的差集
//找出在「客戶」訂單內,但「貨運」沒收到的訂單
$not_receive = array_diff_key($order_list, $order_receive);
echo "貨運沒有收到的訂單如下:<br>";
foreach ($not_receive as $not_key => $not_value) {
    echo "訂單號碼".$not_key.'<br>';
}
echo '<br>';
echo "貨運沒有收到貨款的訂單如下:<br>";
foreach ($order_receive as $notMoney_key => $notMoney_value) {
    //找出貨運沒收到貨款的訂單為何
    if (empty($notMoney_value)) {
    echo "訂單號碼".$notMoney_key.'<br>';
    }
}
結果如下圖所示:
以上就是今天的介紹
如果不太了解foreach、array_key_exists、array_diff_key……等用法
可以去Day 10看一下唷!