使用PHP(1)

以下提供的教學資訊修改自書籍PHP and MySQL 24-Hour Trainer,僅供學術討論與交流使用。


暖身一下

既然要開始使用PHP,至少要先了解一下php環境的基本設置!
使用phpinfo()指令可以列出php環境的基本設置。
<?php phpinfo(); ?>


學習echo與include的用法


echo function可以用來顯示資料,大概就像Java的print、println一樣。
<h1>Welcome</h1>
<p>Today is Sep 27, 2011</p>

//上面輸出的結果和下面輸出的結果是一樣的

<h1>Welcome</h1>
<p>Today is <?php echo date('M j, Y'); ?></p>


include function 則可以讀取指定的檔案,並且將檔案的內容插入原本檔案的區塊之中。

<?php include ('yourFile.php'); ?>
如果還想了解更多的php function,可以查詢官方的php手冊


變數的使用與規則

在php中的變數是以錢錢的符號$呈現,在等號之後則是它對應的值。

<?php 

$myName = 'Andy';

?>

雖然值都是字串,但是使用單引號雙引號來quote會有不同的結果

<?php

$myName = 'Andy';

$myVar = "Hi, my name is $myName";

echo $myVar;

?>
<?php

$myName = 'Andy';

$myVar = 'Hi, my name is $myName';

echo $myVar;
?>

雙引號和單引號的差別在於雙引號可以解讀引號內的變數
單引號則是忠實呈現,即第二段程式碼echo出來的結果為

Hi, my name is $myName

有時候,使用複數形式可能會造成理解上的困難(這比較容易發生在英文裡)
這時候可以使用{}來強調、劃分變數(variables)。例如:

<?php

$Animal = 'cat';

$myVar = "5 {$Animal}s";

echo $myVar;

?>

括號中的字有包含引號的時候,要如何告訴電腦說其實引號不是用來運算的呢?
可以在引號前加入\ 進行逃跑(escape)~

<?php

$myVar = "I don\'t know what the hell is it.";

echo $myVar;

?>


文字與數字之間的轉換
在PHP中,若牽涉到數字的運算,字串會自動轉成數字,如以下的例子即為75
因為$stringNumber被轉換為15了

<?php

$stringNumber = '15a4';

$number = 5;

echo $stringNumber * $number;

?>

使用文字function例如htmlspecialchars() function可以保留html的符號顯示
文字與文字之間可以用句點(.)來concatenate(串連)。

程式碼除錯

當程式寫好之後,不一定能將資料顯示出來
而這些Bug通常都有常見的解決方案,可以先檢查一下:
  1. 是不是忘了打echo
  2. 大小寫的問題。PHP對於大小寫很敏感,也就是說變數的字母雖然一樣,但是若是大小寫不同,PHP會認為那是不同變數。
  3. 忘了打分號(;)
  4. =與==(==是等同數值)
  5. 忘了加$在變數前面,或是多加了$在function上
除此之外,可以善用die() function來讓程式碼的處理停留在某一行上,檢查到目前為止有無錯誤。


使用陣列

陣列是array function

$employee = array('Sally Meyers', 'George Smith', 'Peter Hengel');

使用echo來印出陣列中其中一個元素,0即是代表此陣列中第一個元素

echo $employee[0];

也可以直接指定陣列中的元素對應的數值

$employee[0] = 'Sally Meyers';

使用print_r() function 來列出陣列中所有元素,結果:

Array ( [0] => Sally Meyers [1] => George Smith [2] => Peter Hengel )


另外陣列也可以由以下的形式指定數值:

<?php

$employee = array('name'=>'Sally Meyers', 'position'=>'President', 'yearEmployed'=>2001 );



<?php

$employee['name'] = 'Sally Meyers';

$employee['position'] = 'President';

$employee['yearEmployed'] = 2001;

經過print_r() function列出

print_r($employee);

輸出結果:
Array ( [name] => Sally Meyers [position] => President [yearEmployed] => 2001 )

接著是陣列更複雜的形式
<?php

$employees = array(

array('name'=>'Sally Meyers', 'position'=>'President', 'yearEmployed'=>2001 ),

array('name'=>'George Smith', 'position'=>'Treasurer', 'yearEmployed'=>2006 ),

array('name'=>'Peter Hengel', 'position'=>'Clerk', 'yearEmployed'=>1992 ),

);

print_r($employees); 

輸出結果:
Array ( [0] => Array ( [name] => Sally Meyers [position] => President [yearEmployed] => 2001 ) [1] => Array ( [name] => George Smith [position] => Treasurer [yearEmployed] => 2006 ) [2] => Array ( [name] => Peter Hengel [position] => Clerk [yearEmployed] => 1992)


如果只想要顯示單一元素,就分別指定index來echo

echo $employees[0]['position'];


布林值(boolean)的echo


<?php

$myVar1 = true;

$myVar2 = false;

?>

<p>True:<?php echo $myVar1; ?></p>

<p>False:<?php echo $myVar2; ?></p>

上面這段程式碼的結果為

True:1
False:

False值是不包括任何東西的。在PHP的數值中,從不同的類型轉換到布林,以下狀況都將為False:
  1. 數字0 或是文字0
  2. 空字串 或是沒有元素的陣列
  3. 一個空值的變數
值得注意的是,如果你指定了$myVar = 'False'; PHP會當成你指定字串 所以返回的結果也是True



時間與日期


<?php

echo time();

結果會是millisecond的型態

1410414619


<?php

echo date('c') . '<br />';

echo date('m/d/Y') . '<br />';

echo date('l, F n, Y') . '<br />';

echo date('l ga') . '<br />';

echo date('h:i a') . '<br />';

結果

2014-09-11T07:51:11+02:00
09/11/2014
Thursday, September 9, 2014
Thursday 7am
07:51 am


若想要自行定義時間日期的顯示格式,可以查詢PHP: date - manualDate/Time Functions

使用mktime() function好處是可以做數學運算,並且顯示最終的時間

<?php

$offset = 16;

echo date('n/j/Y', mktime(0,0,0,12+$offset,5,2011));

結果
4/5/2013 

strtotime() function可以更方便的取得時間戳記

<?php

echo date('l, F j, Y', strtotime('12/5/2011')) . '<br />';

echo date('l, F j, Y', strtotime('yesterday', strtotime('12/5/2011'))) . '<br />';

echo date('l, F j, Y', strtotime('yesterday')) . '<br />';

echo date('l, F j, Y', strtotime('now')) . '<br />';

echo date('l, F j, Y', strtotime('Dec 5 2011')) . '<br />';

echo date('l, F j, Y', strtotime('+4 hours')) . '<br />';

echo date('l, F j, Y', strtotime('+1 week')) . '<br />';

echo date('l, F j, Y', strtotime('+2 weeks 1 day 4 hours 10 seconds')) . '<br />';

echo date('l, F j, Y', strtotime('next Tuesday')) . '<br />';

echo date('l, F j, Y', strtotime('last Monday'));

結果

Monday, December 5, 2011
Sunday, December 4, 2011
Wednesday, September 10, 2014
Thursday, September 11, 2014
Monday, December 5, 2011
Thursday, September 11, 2014
Thursday, September 18, 2014
Friday, September 26, 2014
Tuesday, September 16, 2014
Monday, September 8, 2014

getdate() function可以查詢目前時間陣列

Array ( [seconds] => 12 [minutes] => 6 [hours] => 8 [mday] => 11 [wday] => 4 [mon] => 9 [year] => 2014 [yday] => 253 [weekday] => Thursday [month] => September [0] => 1410415572 )

沒有留言:

張貼留言