PHP学习笔记1
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
PHP基礎(chǔ)知識(shí)
? ? PHP使用<?php ... ?>內(nèi)嵌于html中, 使用echo輸出html語句. 例如:
<?phpecho '<p>Order processed.</p>'; ?>????通常, 在form表單中獲取的變量值存儲(chǔ)在$_POST, $_GET, $_REQUEST. 其中submit為GET存儲(chǔ)在$_GET中, 為POST存儲(chǔ)在$_POST中, 默認(rèn)都存儲(chǔ)在$_REQUEST中.
? ? 而PHP中變量以"$"開頭.
一個(gè)實(shí)際例子:
orderform.html:
<!DOCTYPE html> <html><head><meta charset="utf-8"><title></title></head><body><form class="" action="info.php" method="post"><table border="0"><tr bgcolor="#cccccc"><td width="150">Item</td><td width="50">Quantity</td></tr><tr><td>Tires</td><td align="center"><input type="text" name="tireqty" size="3" maxlength="3" /></td></tr><tr><td>Oil</td><td align="center"><input type="text" name="oilqty" size="3" maxlength="3" /></td></tr><tr><td>Spark Plugs</td><td align="center"><input type="text" name="sparkqty" size="3" maxlength="3" /></td></tr><tr><td colspan="2" align="center"><input type="submit" value="Submit Order" /></td></tr></table></form></body> </html>info.php:
<!DOCTYPE html> <html><head><meta charset="utf-8"><title></title></head><body><?php $tireqty = $_POST['tireqty'];$oilqty = $_POST['oilqty'];$sparkqty = $_POST['sparkqty'];echo '<p>Your order is as follows: </p>';echo $tireqty.' tires<br />';echo $oilqty.' bottles of oil<br />';echo $sparkqty.' spark plugs<br />';?></body> </html>這里, 變量和字符串使用點(diǎn)號(hào)(".")進(jìn)行連接. 而如果在雙引號(hào)中, 則變量會(huì)被解釋, 例如:
echo $tireqty.' tires<br />';等價(jià)于:
echo "$tireqty tires<br />";但單引號(hào)中一切都認(rèn)為是字符串.
? ? 使用define語法定義常量:
define('PI', 3.1415926);理解PHP變量:
$GLOBALS: 全局變量數(shù)組.
$_SERVER: 服務(wù)端變量數(shù)組.
$_GET: 使用GET方法傳遞過來的變量.
$_POST: 使用POST方法傳遞過來的變量.
$_COOKIE: 所存儲(chǔ)的cookie變量數(shù)組.
$_ENV: 環(huán)境變量數(shù)組.
$_REQUEST: $_GET/$_POST/$_COOKIE的集合.
$_SESSION: session變量的數(shù)組.
在變量引用方面, PHP使用"&"來解決:
$a = 5; $b = $a; $a = 7; // $b依舊等于5而如果使用了"&":
$a = 5; $b = &$a; $a = 7; // 則$b也等于7使用unset來解除變量所關(guān)聯(lián)的引用:
unset($a);在``字符內(nèi)可填寫: 可執(zhí)行的操作:
$out = `ls -la`; echo '<pre>'.$out.'</pre>';而instanceof用于判斷一個(gè)對(duì)象是否是一個(gè)特定類的實(shí)例:
class sampleClass{}; $myObject = new sampleClass(); if ($myObject instanceof sampleClass)echo "myObject is an instance of sampleClass";使用gettype/settype來讀取/設(shè)置變量的類型:
$a = 56; // integer echo gettype($a).'<br />'; settype($a, 'double'); // double echo gettype($a).'<br />';而PHP也提供了如下函數(shù)用于判斷變量類型:
is_array()/is_double()/is_float()/is_real()/is_long()/is_int()/is_integer()/is_string()/is_bool()/is_object()/is_resource()/is_null()/is_scalar()/is_numeric()/is_callable()
三個(gè)特殊的測(cè)試函數(shù):
isset(): 判斷變量是否存在.
unset(): 刪除變量.
empty(): 判斷變量是否為空.
使用數(shù)組
使用array進(jìn)行數(shù)組的初始化:
$arr = array(1, 2, 3, 4, 5);而循環(huán)數(shù)組既可以使用for, 也可以使用foreach:
$arr = array(1, 2, 3, 4, 5); for ($i = 0; $i < count($arr); $i++) {echo $arr[$i].' '; } echo '<br />'; foreach($arr as $item) {echo $item.' '; }但PHP的數(shù)組實(shí)際上為一個(gè)map結(jié)構(gòu).
$arr = array(1, 2);實(shí)際上存儲(chǔ)為:
$arr = array("0" => 1, "1" => 2);而map型結(jié)構(gòu), 可使用如下的循環(huán): foreach/each/list
$arr = array("a" => 1, "b" => 2); foreach($arr as $key => $value) {echo $key.' => '.$value.' '; } echo '<br />'; reset($arr); while ($ele = each($arr)) {echo $ele['key'].' => '.$ele['value'].' '; } echo '<br />'; reset($arr); while (list($key, $value) = each($arr)) {echo $key.' => '.$value.' '; }關(guān)聯(lián)數(shù)組的函數(shù)
使用sort函數(shù)對(duì)數(shù)組進(jìn)行排序:
$arr = array('Tires', 'Oil', 'Spark Plugs'); sort($arr); foreach($arr as $key => $val) {echo $key.' => '.$val.'<br />'; }而sort函數(shù)支持第二個(gè)參數(shù), 用于排序的判斷: SORT_REGULAR, SORT_NUMERIC, SORT_STRING.
但如果針對(duì)的是map型數(shù)組, 則可使用asort(根據(jù)value進(jìn)行排序)和ksort(根據(jù)key進(jìn)行排序):
$arr = array('Tires' => 100, 'Oil' => 10, 'Spark Plugs' => 4); asort($arr); // Spark Plugs => 4 Oil => 10 Tires => 100 foreach($arr as $key => $val) {echo $key.' => '.$val.' '; } echo '<br />'; ksort($arr); // Oil => 10 Spark Plugs => 4 Tires => 100 foreach($arr as $key => $val) {echo $key.' => '.$val.' '; } echo '<br />';反序情況下, 使用rsort()/arsort()/krsort()即可.
亂序可使用shuffle().
字符串操作和正則表達(dá)式
使用trim()/ltrim()/rtrim()去除字符串的空白字符.
strtoupper: 將字符串轉(zhuǎn)為大寫.
strtolower: 將字符串轉(zhuǎn)為小寫.
ucfirst: 將字符串的第一個(gè)字母大寫.
ucwords: 將字符串中的每個(gè)單詞的第一個(gè)字母大寫.
explode進(jìn)行字符串的分割存儲(chǔ)于數(shù)組, 而implode/join將數(shù)組合并成字符串.
$content = "hello,world"; $arr = explode(',', $content); // hello world for ($i = 0; $i < count($arr); $i++) {echo $arr[$i].' '; } echo '<br />'; $con = implode(',', $arr); // hello,world echo $con;substr(string str, int start[, int length]): 獲取子字符串.
strcmp()/strcasecmp()/strnatcmp(): 比較字符串.
strlen(): 獲取字符串的長度.
字符串中查找子串: strstr()/strchr()/strrchr()/stristr()
strpos()/strrpos()
替換字符串: str_replace()/substr_replace()
復(fù)用代碼和編寫函數(shù)
在PHP中可以使用require()或者include()來復(fù)用代碼. require()和include()差不多, 唯一的區(qū)別在于當(dāng)失敗時(shí)候, require()提示錯(cuò)誤, 而include()則僅僅警告.
require_once()/include_once()只加載一次文件.
reusable.php:
<?phpecho 'Here is a very simple PHP statement.<br />'; ?>test.php:
<?phpecho 'This is the main file.<br />';require('reusable.php');echo 'The script will end now.<br />'; ?>瀏覽器顯示:
This is the main file. Here is a very simple PHP statement. The script will end now.PHP中, 定義函數(shù)的格式為:
function func(){// ... }傳參部分, 也支持傳遞默認(rèn)參數(shù):
function my_function($arg1, $arg2=2, $arg3=4) {echo 'arg1:'.$arg1.'<br />';echo 'arg2:'.$arg2.'<br />';echo 'arg3:'.$arg3.'<br />'; }my_function(111, 333);理解作用域
函數(shù)內(nèi)聲明的變量為局部變量.
函數(shù)外聲明的變量為全局變量.
超級(jí)全局變量(例如$_POST等)不分局部全局.
使用require()僅僅只是內(nèi)嵌文件, 并不會(huì)影響作用域.
關(guān)鍵字global用于定義全局變量.
變量可以使用unset()進(jìn)行刪除.
function fn() {global $var; $var = 'content'; } fn(); echo $var;傳參通常分為傳值和傳引用. 正常情況下傳值, 特殊要修改傳入的參數(shù), 則傳引用, 參數(shù)前加"&"即可.
?
?
?
?
?
?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://my.oschina.net/voler/blog/841346
總結(jié)
- 上一篇: 五、单件模式
- 下一篇: 基于scrapy爬虫的天气数据采集(py