進度條

【PHP】08. 算術運算

【PHP】08. 算術運算

作者: 進度條編輯群 更新日期:

此文章也有影片介紹,可以搭配影片一起學習!

01. 算術運算 (所屬課程)


以下正式開始文章


這一堂課要講的是算術運算子,甚麼是算術運算子呢?簡單來說就是我們小時候學的加減乘除(+-*/)。
話不多說,咱們先來練習吧!


加法(+)與減法(-)

〈加法〉

範例:

<?php

$number = 10;
$value = $number + 1;
echo $value; 

?>


將右邊的值10帶入第二行的右邊$number(可以想成代換的概念),則10 + 1 = 11,當echo $ value時,

 

輸出結果:

11 

 

如果你對以上的做法還不熟悉的話,也可以在第二行右邊加上小括號,
小括號內的值會先被計算,在視覺上也比較容易看懂。

 

範例:

<?php

$number = 10;
$value = ($number + 1);
echo $value; 

?>

 

輸出結果:

11

 

〈減法〉

範例(整數):

<?php

$number = 15;
$value = $number - 2 + 1;
echo $value;

?>

 

輸出結果:

14 

 

範例 (使用浮點數):

<?php

$number = 15.5;
$value = $number - 2 + 1;
echo $value; 

?>

 

輸出結果:

14.5


當你不確定輸出的值是整數還是浮點數,可以利用var_dump()測試

 

範例:

<?php

$number = 15.5;
$value = $number - 2 + 1.5;
var_dump( $value );
echo $value;

?>

 

輸出結果:

  float(15) 15

 

因此,我們可以從這個範例了解,就算輸出結果為整數,不代表PHP的解析就是整數(也有可能是浮點數),但一般而言只要了解 PHP 運作背後的原理,重點還是算出正確的值即可。

 

乘法(*)與除法(/)

〈乘法〉

範例:

<?php

$number1 = 10;
$value1 = $number1 * 5;
echo $value1; 

?>

 

輸出結果:

50

 

接下來利用var_dump()測試印出來的數值是整數還是浮點數

 

範例:

<?php

$number1 = 10.2;
$value1 = $number1 * 5;
var_dump( $value1 );
echo $value1;

?>

 

輸出結果:

float(51) 51

 

範例:

<?php

$number1 = 10;
$value1 = $number1 * 5;
var_dump( $value1 );
echo $value1;

?>

 

輸出結果:

int(50) 50 

 

〈除法〉

範例:

<?php

$number2 = 10;
$value2 = $number2 / 5;
var_dump( $value2 );
echo $value2; 

?>

 

輸出結果:

int(2) 2

 

整數除以整數,var_dump()下仍是整數。

範例:

<?php

$number2 = 12;
$value2 = $number2 / 5;
var_dump( $value2 );
echo $value2; 

?>

 

輸出結果:

float(2.4) 2.4


餘數(%)

餘數的定義:12除以5等於2於2,餘數為2,程式語言以百分比(%)為餘數的表示符號。

 

範例:

<?php

$number3 = 12;
$value3 = $number3 % 5;
var_dump( $value3 );
echo $value3; 

?>

 

輸出結果:

int(2)2 

 

先乘除後加減?

範例:

<?php

$result = 1 * 2 + 3;
echo $result; 

?>

 

輸出結果:

5

 

那如果我們把1*2放到後面去,輸出結果仍然是5。

 

範例:

<?php

$result = 3 + 1 * 2;
echo $result; 

?>

 

輸出結果:

 

如果我們把1*2改成2*2,輸出結果為7。

範例:

<?php


$result = 3 + 2 * 2;
echo $result; 

?>

 

輸出結果:

7

 

如果嘗試利用小括號讓特定區塊 (3 + 2 )先處理,輸出結果為10。

 

範例:

<?php

$result = (3 + 2 ) * 2;
echo $result; 

?>

 

輸出結果:

10


結論:先乘除後加減,但有小括號內部的值優先處理。  

 

看了這麼多範例,是不是能提供練習題來小試身手呢?

沒問題,這裡準備了一道練習題能整合上述所學內容,

 

[練習]  計算1783秒等於幾小時幾分幾秒?


1. 首先,先定義一個變數代表總秒數  $total_seconds = 1783

 

2. 接下來定義一個變數代表小時 $hour ,一小時代表60秒*60分,

    因此$hour= $total_seconds / ( 60 * 60),而小時數為整數,

    可利用intval()語法,將答案無條件捨去成整數,

    則$hours = intval($total_seconds / ( 60 * 60));

 

3. 接下來定義一個變數代表分鐘 $minutes,

   一小時有60分鐘,所以$total_seconds/60是總分鐘數,
  
   再用總分鐘數除以60,除的盡的就會變成小時(小時的值已在第二步驟處理)

   除不盡的餘數就是分鐘數。因此公式可寫成 $minutes= ( $total_seconds /60)%60,   這部分若比較難理解可以用下列方式帶入數字看看

   若 $total_seconds=1783秒
    1783秒/60秒=29.717分
    29.717分 / 60分(1小時)     除不盡.,所以餘數是29.717分(29分43秒)


   若 $total_seconds=3683秒
    3683秒/60秒=61.383分
    61.383分 / 60分(1小時)     除的盡.,所以餘數是1.383分(1小時1分23秒)

 

   但此時分鐘數會有小數點問題,因此我們可以使用floor()語法,   將答案無條件捨去後再當作餘數則$minutes = floor($total_seconds / 60) % 60;


4.接下來定義一個變數代表秒數,總秒數除以60的餘數為秒數,因此公式可以直接寫成$seconds = $total_seconds % 60;

 

5.接著echo $hours . "小時" . $minutes . "分鐘" . $seconds . "秒";

 

6.答案為 0小時29分鐘 43秒


範例:

$total_seconds = 1783;
$hours = intval($total_seconds / ( 60 * 60));
$minutes = floor($total_seconds / 60) % 60;
$seconds = $total_seconds % 60;
echo $hours . "小時" . $minutes . "分鐘" . $seconds . "秒";

 

輸出結果:

0小時29分鐘 43秒 

 

因為我們已經把公式都設計好了,接下來只要修改變數$total_seconds的值,就可以自動計算了!

如果你想要練習的話,也可以試著把天(Day)加進來練習看看!


自動轉型別

當php遇到一連串數值型的字串與算術運算子時,會自動將型別轉成數字相加

範例:

echo  "1" + "2";
var_dump("1" + "2"); 

 

輸出結果:

3 int(3) 

以上為數學的基本運算,這堂課先到這裡,練習題要做喔。

 

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊