PHP進階篇總結筆記

一.數組

 

1.創建
$arr = array();表示創建一個空數組,並把創建的空數組賦值給變量$arr。

2.賦值,取值
$fruit = array("蘋果","香蕉","菠蘿");
array('0'=>'蘋果');
$fruit0 = $fruit['0'];

3.for循環出數組內的值
$fruit=array('蘋果','香蕉','菠蘿');
for($i=0; $i<3; $i++){
echo '<br>數組第'.$i.'值是:'.$fruit[$i];
}

4.foreach循環出數組內的值
$fruit=array('蘋果','香蕉','菠蘿');
foreach($fruit as $k=>$v){
echo '<br>第'.$k.'值是:'.$v;
}

5.關聯數組初始化,非索引
$fruit = array(
'apple'=>"蘋果",
'banana'=>"香蕉",
'pineapple'=>"菠蘿"
); 
//賦值
array('apple'=>'蘋果');
//取值
$fruit0 = $fruit['banana'];

6.foreach循環出關聯數組的值
$fruit=array('apple'=>"蘋果",'banana'=>"香蕉",'pineapple'=>"菠蘿");
foreach($fruit as $k=>$v){
echo '<br>水果的英文鍵名:'.$k.',對應的值是:'.$v;
}

 

二.函數
使用return關鍵字可以使函數返回值,可以返回包括數組和對象的任意類型,如果省略了 
return,則默認返回值爲 NULL。
返回語句會立即中止函數的運行,並且將控制權交回調用該函數的代碼行,因此下面函數的 
返回值跟上面的函數是一樣的。
函數不能返回多個值,但可以通過返回一個數組來得到類似的效果。
function numbers() {
return array(1, 2, 3);
}
list ($one, $two, $three) = numbers();


可變函數
即通過變量的值來調用函數,因爲變量的值是可變的,所以可以通過改變一個變量的值來實 
現調用不同的函數。經常會用在回調函數、函數列表,或者根據動態參數來調用不同的函數 
。可變函數的調用方法爲變量名加括號。
function name() {
echo 'jobs';
}
$func = 'name';
$func(); //調用可變函數


判斷函數是否存在
function func() {
}
if (function_exists('func')){
echo 'exists';
}

 

四.字符串操作
1.單引號與雙引號
不能混用即開始與結尾必須相同,雙引號中可直接包含字符串
$str='hello';
echo "str is $str"; //運行結果: str is hello
echo 'str is $str'; //運行結果: str is $str

2.字符串鏈接用 .

3.去除空格
trim去除一個字符串兩端空格。
rtrim是去除一個字符串右部空格,其中的r是right的縮寫。
ltrim是去除一個字符串左部空格,其中的l是left的縮寫。

4.獲取字符串的長度strlen()
$str = 'hello';
$len = strlen($str);
echo $len;//輸出結果是5

5.字符串的截取 substr(),中文mb_substr()
函數說明:substr(字符串變量,開始截取的位置,截取個數)
$str='i love you';
//截取love這幾個字母
echo substr($str, 2, 4);

$str='我愛你,中國';
//截取中國兩個字
echo mb_substr($str, 4, 2, 'utf8');

6.查找字符串strpos()
$str = 'I want to study at imooc';
$pos = strpos($str, 'imooc');
echo $pos;//結果顯示19,表示從位置0開始,imooc在第19個位置開始出現

7.替換字符串str_replace()
$str = 'I want to learn js';
$replace = str_replace('js', 'php', $str);
echo $replace;//結果顯示I want to learn php

8.格式化字符串sprintf()
函數說明:sprintf(格式, 要轉化的字符串)
$str = '99.9';
$result = sprintf('%01.2f', $str);
echo $result;//結果顯示99.90

9.字符串的分割與合併,合併implode(),分割explode()
函數說明:implode(分隔符[可選], 數組)
返回值:把數組元素組合爲一個字符串
$arr = array('Hello', 'World!');
$result = implode('', $arr);
print_r($result);//結果顯示Hello World!

函數說明:explode(分隔符[可選], 字符串)
返回值:函數返回由字符串組成的數組
$str = 'apple,banana';
$result = explode(',', $str);
print_r($result);//結果顯示array('apple','banana')

10.字符串的轉義addslashes()
函數說明:用於對特殊字符加上轉義字符,返回一個字符串
返回值:一個經過轉義後的字符串
$str = "what's your name?";
echo addslashes($str);//輸出:what\'s your name?

六.會話控制(session與cookie)
1.設置cookie
$value = 'test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); //有效期一小時
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //設置路徑 
與域
因爲Cookie是通過HTTP標頭進行設置的,所以也可以直接使用header方法進行設置。
header("Set-Cookie:cookie_name=value");

//刪除
setcookie('test', '', time()-1); 

2.session
session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);

//刪除unset
session_start();
$_SESSION['name'] = 'jobs';
unset($_SESSION['name']);
echo $_SESSION['name']; //提示name不存在


七.文件系統
1.讀取文件內容file_get_contents()
可以將整個文件全部讀取到一個字符串中
$content = file_get_contents('./test.txt');
file_get_contents也可以通過參數控制讀取內容的開始點以及長度。
$content = file_get_contents('./test.txt', null, null, 100, 500);

2.判斷文件是否存在is_file(),file_exists
只是判斷文件存在,使用file_exists就行,file_exists不僅可以判斷文件是否存在,同時 
也可以判斷目錄是否存在,從函數名可以看出,is_file是確切的判斷給定的路徑是否是一 
個文件。
可以使用is_readable與is_writeable在文件是否存在的基礎上,判斷文件是否可讀與可寫 

$filename = './test.txt';
if (file_exists($filename)) {
echo file_get_contents($filename);
}

3.寫入到文件file_put_contents
$filename = './test.txt';
$data = 'test';
file_put_contents($filename, $data);
$data參數可以是一個一維數組,當$data是數組的時候,會自動的將數組連接起來,相當於 
$data=implode('', $data);

4.獲取文件的修改時間
fileowner:獲得文件的所有者
filectime:獲取文件的創建時間
filemtime:獲取文件的修改時間
fileatime:獲取文件的訪問時間

5.取得文件的大小filesize()
function getsize($size, $format = 'kb') {
$p = 0;
if ($format == 'kb') {
$p = 1;
} elseif ($format == 'mb') {
$p = 2;
} elseif ($format == 'gb') {
$p = 3;
}
$size /= pow(1024, $p);
return number_format($size, 3);
}

$filename = '/data/webroot/usercode/code/resource/test.txt';
$size = filesize($filename);

$size = getsize($size, 'kb'); //進行單位轉換
echo $size.'kb';

6.刪除文件unlink(),刪除文件夾rmdir()
unlink($filename);
rmdir($dir);
foreach (glob("*") as $filename) {
unlink($filename);
}


八.日期和時間
1.獲取Unix時間戳 time() 
它表示從 1970年1月1日 00:00:00 到當前時間的秒數之和。

2.獲取當前日期date()
//date函數,第二個參數取默認值的情況
echo date("Y-m-d");//2014-03-30
//date函數,第二個參數有值的情況
echo date("Y-m-d",'1396193923');//2014-03-30,1396193923表示2014-03-30的unix時間 

3.獲取日期的Unix時間戳strtotime()
echo strtotime('2014-04-29');//1398700800,這個數字表示從1970年1月1日 00:00:00 
到2014年4月29號經歷了1398700800秒

4.將格式化的日期字符串轉換爲Unix時間戳
函數說明:strtotime(要解析的時間字符串, 計算返回值的時間戳【默認是當前的時間,可 
選】)
返回值:成功則返回時間戳,否則返回 FALSE
echo strtotime("now");//相當於將英文單詞now直接等於現在的日期和時間,並把這個日 
期時間轉化爲unix時間戳。這個效果跟echo time();一樣。
echo strtotime("+1 seconds");//相當於將現在的日期和時間加上了1秒,並把這個日期時 
間轉化爲unix時間戳。這個效果跟echo time()+1;一樣。
echo strtotime("+1 day");//相當於將現在的日期和時間加上了1天。
echo strtotime("+1 week");//相當於將現在的日期和時間加上了1周。
echo strtotime("+1 week 3 days 7 hours 5 seconds");//相當於將現在的日期和時間加 
上了1周3天7小時5秒。

5.格式化格林威治時間gmdate()函數
舉個例子,我們現在所在的中國時區是東八區,領先格林威治時間8個小時,有時候也叫 
GMT+8,那麼服務器運行以下腳本返回的時間應該是這樣的:
當前時間假定是2014-05-01 15:15:22
echo date('Y-m-d H:i:s', time()); //輸出爲:2014-05-01 15:15:22 
echo gmdate('Y-m-d H:i:s', time()); //輸出爲:2014-05-01 07:15:22 因爲格林威治時 
間是現在中國時區的時間減去8個小時,所以相對於現在時間要少8個小時


九.圖形圖像操作
//創建畫布
$img = imagecreatetruecolor(100, 100);
//畫筆顏色
$red = imagecolorallocate($img, 0xFF, 0x00, 0x00);
//使用imageline繪製線條
imageline($img,0,0,100,100,$red);
//通過header與imagepng進行圖像的輸出
header("content-type: image/png");
imagepng($img);
//最後調用imagedestroy釋放該圖片佔用內存
imagedestroy($img);

//繪製文字
使用imagestring函數來進行文字的繪製,這個函數的參數很多:imagestring ( resource 
$image , int $font , int $x , int $y , string $s , int $col ),可以通過$font來設 
置字體的大小,x,y設置文字顯示的位置,$s是要繪製的文字,$col是文字的顏色。
imagestring($img, 5, 0, 0, "Hello world", $red);


//保存成圖片文件
$filename = 'img.png';//文件名
imagepng($img,$filename);//png格式
​imagejpeg($img, $filename, 80);//jpg
使用imagepng可以將圖像保存成png格式,如果要保存成其他格式需要使用不同的函數,使 
用imagejpeg將圖片保存成jpeg格式,imagegif將圖片保存成gif格式,需要說明的是, 
imagejpeg會對圖片進行壓縮,因此還可以設置一個質量參數。


//加水印實例
$filename = 'bei_01.jpg';
//開始添加水印操作
$im = imagecreatefromjpeg($filename);
$logo = imagecreatefrompng('logo.png');
$size = getimagesize('logo.png');
imagecopy($im, $logo, 15, 15, 0, 0, $size[0], $size[1]); 

header("content-type: image/jpeg");
imagejpeg($im);


十一.數據庫操作
1.判斷是否已經安裝
if (function_exists('mysql_connect')) {
echo 'Mysql擴展已經安裝';
}

2.鏈接3種方式
mysql擴展進行數據庫連接的方法:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

mysqli擴展:
$link = mysqli_connect('mysql_host', 'mysql_user', 'mysql_password');

PDO擴展
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);

3.數據庫鏈接
$host = 'localhost';
$user = 'code1';
$pass = '';
$link = mysql_connect($host, $user, $pass);

mysql_select_db('code1');//選擇數據庫
mysql_query("set names 'utf8'");//設置鏈接使用的字符串

4.執行mysql查詢
用mysql_query加sql語句的形式向數據庫發送查詢指令。
$res = mysql_query('select * from user limit 1');
查詢類的語句會返回一個資源句柄(resource),可以通過該資源獲取查詢結果集中的數據 

$row = mysql_fetch_array($res);
var_dump($row);
默認的,PHP使用最近的數據庫連接執行查詢,但如果存在多個連接的情況,則可以通過參 
數指令從那個連接中進行查詢。
$link1 = mysql_connect('127.0.0.1', 'code1', '');
$link2 = mysql_connect('127.0.0.1', 'code1', '', true); //開啓一個新的連接
$res = mysql_query('select * from user limit 1', $link1); //從第一個連接中查詢數 

5.插入數據
$sql = "insert into user(name, age, class) values('李四', 18, '高三一班')";
mysql_query($sql); //執行插入語句

行插入語句以後,可以得到自增的主鍵id,通過PHP的mysql_insert_id函數可以獲取該id。
$uid = mysql_insert_id();

6.取得查詢結果
$row = mysql_fetch_array($result);
如果要獲取數據集中的所有數據,我們通過循環來遍歷整個結果集。
$data = array();
while ($row = mysql_fetch_array($result)) {
$data[] = $row;
}

7.分頁查詢
$page = 2;
$pagesize = 2;
$offset = ($page - 1) * $pagesize;
$sql = "select * from user limit $offset, $pagesize";
$result = mysql_query($sql);
//循環獲取當前頁的數據
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}


8.刪除與更新
//更新
$sql = "update user set name = '曹操' where id=2 limit 1";
if (mysql_query($sql)) {
echo '更新成功';
}
//刪除
$sql = "delete from user where id=2 limit 1";
if (mysql_query($sql)) {
echo '刪除成功';
}

對於刪除與更新操作,可以通過mysql_affected_rows函數來獲取更新過的數據行數,如果 
數據沒有變化,則結果爲0。
$sql = "update user set name = '曹操' where id=2 limit 1";
if (mysql_query($sql)) {
echo mysql_affected_rows();
}


9.關閉數據庫鏈接
PHP會自動關閉數據庫連接,一般情況下已經滿足需求,但是在對性能要求比較高的情況下 
,可以在進行完數據庫操作之後儘快關閉數據庫連接,以節省資源,提高性能。
mysql_close();
mysql_close($link);//多個鏈接

 

 

原文地址:https://www.cnblogs.com/xyangs/p/4258815.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章