快速上手PHP

對(duì)象:至少有一種編程語(yǔ)言經(jīng)驗(yàn)者
目標(biāo):掃除你的畏懼,快速上手PHP
當(dāng)然你也可以直接看官方手冊(cè)

1.開(kāi)發(fā)工具

對(duì)于初學(xué)者最重要的就是能夠直接Coding,而且能看到運(yùn)行效果,因此使用PhpStorm會(huì)讓你感覺(jué)神清氣爽.

2.語(yǔ)法基礎(chǔ)

  1. 變量及操作符
  1. 變量類型包括:Boolean(TRUE,FALSE)布爾類型,integer整型,Float浮點(diǎn)型,String字符串,Array數(shù)組,Object對(duì)象,NULL,Callback回調(diào)類型
  2. PHP 中的變量用一個(gè)美元符號(hào)后面跟變量名來(lái)表示。變量名是區(qū)分大小寫的。注意:無(wú)需聲明變量類型
$isUnderstand = TRUE;        //Boolean
$fileCount = 5;              //integer
$height1 = 175.3;             //Float
$height2 = 176.9;             //Float
$name = 'xxx';               //String
$arr = array();              //Array
$sumHeight = $height1 + $height2;//操作變量
$fullName = $name.'yyy';
  1. PHPArray分兩種(沒(méi)有字典的概念,在JSON與對(duì)象轉(zhuǎn)換中經(jīng)常容易出錯(cuò)):
    1).索引數(shù)組(相當(dāng)于C++中的數(shù)組);
$arr = array(1,2,3,4,'hello','world');
echo $arr[5];

2).關(guān)聯(lián)數(shù)組(鍵值對(duì),相當(dāng)于C++中的Map)

$arr = array('h'=>'hello','w'=>'world');
echo $arr['w'];
  1. 控制語(yǔ)句
  1. 流程控制if else, switch
//if else
$isOK = TRUE;
$isReady = TRUE;
if($isOK){
  //dosomething
}elseif($isReady){
  //dosomething
}else{
  //dosomething
}
//switch
$str = '30';
switch ($str){    
  case '20':       
        echo $str;        
        break;    
  case '30':        
        echo $str.'hello';
        break;
}
  1. 循環(huán)控制for, foreach,while
for ($i = 0;$i < 100; $i++){
  //statement
}
foreach (array as $value){ 
//statement
}
// 或者:
foreach (array as $key => $value){
//statement
}

3.常用函數(shù)

  1. 字符串操作
$str = '345671';
$arr = array(1,2,3,4);
//字符串獲取
echo substr($str,1,2);//從字符串中獲取其中的一部分
//字符串連接
echo implode($arr,'*');//使用字符將數(shù)組的內(nèi)容組合成一個(gè)字符串
echo join($arr,'*');//同 implode()
//字符串分割
print_r(explode('*',$str,2));//使用一個(gè)字符串分割另一個(gè)字符串,返回?cái)?shù)組
print_r(str_split($str,3));//將字符串分割到數(shù)組中,每個(gè)數(shù)組中3個(gè)元素
//字符串替換
echo str_replace('*','$',$str);//把字符串的一部分替換為另一個(gè)字符串
//字符串計(jì)算
echo strpos('abcdecf', 'c');    //輸出 2
$str1 = "This function returns the last occurance of a string";
echo strlen($str1);//取得字符串的長(zhǎng)度
$pos = strrpos($str1, "st");
if($pos !== FALSE){
    echo '字串 st 最后出現(xiàn)的位置是:',$pos;
} else {
    echo '查找的字符串中沒(méi)有 in 字串';
}
  1. 日期操作
<?php
//do something
sleep(3);
//do something
$running_time = time() - $_SERVER['REQUEST_TIME'];
echo '頁(yè)面運(yùn)行時(shí)間:',$running_time,' 秒';
?>
<?php
date_default_timezone_set('Asia/Shanghai');//設(shè)置時(shí)區(qū)
echo date('Y-m-d h:i:s',time());//輸出格式
?>
  1. JSON轉(zhuǎn)換
<?php
//encode
$arr = array('h'=>'hello','w'=>'world','p'=>'PHP','list'=>array(1,2,3,100));
echo json_encode($arr);//將數(shù)組轉(zhuǎn)換成JSON
//decode
$str = '{"h":"hello","w":"world","p":"PHP","list":[1,2,3,100]}';
print_r(json_decode($str));//將JSON轉(zhuǎn)換成數(shù)組
?>
  1. 文件操作
<?php//打開(kāi)文件
if(!file_exists("test.txt")){  //如果文件不存在(默認(rèn)為當(dāng)前目錄下)      
      $fh = fopen("test.txt","w"); 
      fclose($fh);          //關(guān)閉文件
}
?>
<?php//打開(kāi)互聯(lián)網(wǎng)文件
$fh = fopen("http://www.baidu.com/", "r");
if($fh){
    while(!feof($fh)) {
        echo fgets($fh);
    }
}
?>
<?php//打開(kāi)文件
// 讀取時(shí)同事將換行符轉(zhuǎn)換成 <br />
//file_get_contents()把整個(gè)文件讀入一個(gè)字符串,成功返回一個(gè)字符串,失敗則返回FALSE
echo nl2br(file_get_contents('test.txt'));
?>
<?php//打開(kāi)文件
$fh = @fopen("test.txt","r") or die("打開(kāi) test.txt 文件出錯(cuò)!");
// if條件避免無(wú)效指針
if($fh){
    while(!feof($fh)) {
        echo fgets($fh), '<br />';
    }
}
fclose($fh);
?>
<?php// 要寫入的文件名字
$filename = 'file.txt';
// 寫入的字符
$word = "你好!";
$fh = fopen($filename, "w");
echo fwrite($fh, $word);    // 輸出:6
fclose($fh);
?>
<?php//寫入文件
echo file_put_contents("test.txt", "This is something.");
?>
  1. 上傳文件

文件上傳功能是網(wǎng)絡(luò)生活中經(jīng)常使用的一個(gè)功能。使用 PHP 可以很方便的實(shí)現(xiàn)文件上傳,其具體流程如下: 表單選擇文件 -> 檢查文件大小及類型 -> 生成臨時(shí)文件 -> 移動(dòng)臨時(shí)文件至文件存儲(chǔ)目錄 -> 記錄文件信息以便于管理。

  1. HTML表單
<form enctype="multipart/form-data" action="upload.php" method="post">
<label for="file">請(qǐng)選擇上傳的文件</label>
<input type="file" name="file" size="40" />
<br />
<input type="submit" name="submit" value="確定" />
</form>

2.PHP文件處理

//upload.php
<?php
//文件存儲(chǔ)路徑
$file_path="upload/";
//664權(quán)限為文件屬主和屬組用戶可讀和寫,其他用戶只讀。
if(is_dir($file_path)!=TRUE) mkdir($file_path,0664) ;
//定義允許上傳的文件擴(kuò)展名
$ext_arr = array("gif", "jpg", "jpeg", "png", "bmp", "txt", "zip", "rar");
if (empty($_FILES) === false) {
    //判斷檢查
    if($photo_up_size > 2097152){
        exit("對(duì)不起,您上傳的照片超過(guò)了2M。");
    }
    if($_FILES["file"]["error"] > 0){
        exit("文件上傳發(fā)生錯(cuò)誤:".$_FILES["file"]["error"]);
    }
    //獲得文件擴(kuò)展名
    $temp_arr = explode(".", $_FILES["file"]["name"]);
    $file_ext = array_pop($temp_arr);
    $file_ext = trim($file_ext);
    $file_ext = strtolower($file_ext);
    //檢查擴(kuò)展名
    if (in_array($file_ext, $ext_arr) === false) {
        exit("上傳文件擴(kuò)展名是不允許的擴(kuò)展名。");
    }
    //以時(shí)間戳重命名文件
    $new_name = time().".".$file_ext;
    //將文件移動(dòng)到存儲(chǔ)目錄下
    move_uploaded_file($_FILES["file"]["tmp_name"],"$file_path" . $new_name);
    //向數(shù)據(jù)表寫入文件存儲(chǔ)信息以便管理
    //*********** 代碼略 ***********//
    echo "文件上傳成功!";
    exit;
} else {
    echo "無(wú)正確的文件上傳";
}
?>
  1. 生成圖片
    圖像生成和處理
<?php
$img = imagecreate(400,400);//創(chuàng)建image
imagecolorallocate($img,0,0,0);//設(shè)置背景色
header('Content-type: image/png');
imagepng($img);
?>
  1. 圖片打水印
    圖像生成和處理
<?php
$img = imagecreate(400,400);//創(chuàng)建image
imagecolorallocate($img,0,0,0);//設(shè)置背景色
imagestring($img,0,0,200,20,'水印',255,0,0);//添加水印
header('Content-type: image/png');
imagepng($img);
?>

4. 表單及會(huì)話

  1. 表單創(chuàng)建和提交
    常見(jiàn)表單類型:PHP 表單,PHP $_POST,PHP $_GET
<html>
<body>
<form name="commentform" method="post" action="comment.php">
<p>稱呼: <input type="text" name="nickname" /></p>
<input type="submit" value="提 交" />
</form>
</body>
</html>
//comment.php
<html>
<body>
<p>您的稱呼是:<?php echo $_POST["nickname"]; ?></p>
</body>
</html>
  1. 會(huì)話管理
  1. Cookie設(shè)置和獲取(PHP 內(nèi)置了 $_COOKIE 變量以訪問(wèn)設(shè)置的cookie值)
<?php//設(shè)置Cookie
setcookie("username", "xiaoli", time()+3600, "/", ".5idev.com");
?>
<?php//讀取Cookie
if (isset($_COOKIE["username"])) {
    echo "歡迎你: ".$_COOKIE["username"];
} else {
    echo "請(qǐng)登陸";
}
?>
<?php//銷毀Cookie
setcookie("username", "", time()-3600);//失效時(shí)間
?>
  1. Session設(shè)置(PHP內(nèi)置的$_SESSION變量可以很方便的訪問(wèn)設(shè)置的session變量。)
//要?jiǎng)?chuàng)建 session ,必須先使用 session_start() 函數(shù)開(kāi)啟一個(gè) session 會(huì)話,系統(tǒng)會(huì)分配一個(gè)會(huì)話 ID:
<?php
session_start();
?>
//使用 session_register() 函數(shù)可以在目前會(huì)話下注冊(cè)一個(gè)或多個(gè)全局 session 變量。
<?php
session_start();
$username = "xiaoming";
session_register("username");
//session_start();//方式二
//$_SESSION["username"] = "xiaoming";//方式二
?>
//讀取Session
<?php
session_start();
echo "登記的用戶名為:".$_SESSION["username"];    //輸出 登記的用戶名為:xiaoming
?>
//可以通過(guò) session_unregister() 函數(shù)來(lái)注銷單個(gè) session 變量或使用 session_unset() 來(lái)注銷整個(gè) session 會(huì)話。
<?php
session_start();
session_unregister("username");    //注銷 session 變量
session_unset();                    //注銷 session 會(huì)話
//unset($_SESSION["username"]);//方式二
?>

5. 總結(jié)

哈哈,PHP是世界上最好的語(yǔ)言.

6. 參考

  1. 官方手冊(cè)
  2. 在線教程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,038評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,853評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,616評(píng)論 6 408
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,112評(píng)論 1 323
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,355評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,727評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,928評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,165評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,570評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,813評(píng)論 1 282
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,585評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,892評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容