一、數(shù)組操作的基本函數(shù)
創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計公司的優(yōu)秀設(shè)計人員和策劃人員組成的一個具有豐富經(jīng)驗的團(tuán)隊,其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設(shè)計師、平面廣告設(shè)計師、網(wǎng)絡(luò)營銷人員及形象策劃。承接:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)頁設(shè)計制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫開發(fā),以高性價比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務(wù)。
數(shù)組的鍵名和值
array_values($arr); 獲得數(shù)組的值
array_keys($arr); 獲得數(shù)組的鍵名
array_flip($arr); 數(shù)組中的值與鍵名互換(如果有重復(fù)前面的會被后面的覆蓋)
in_array("apple",$arr); 在數(shù)組中檢索apple
array_search("apple",$arr); 在數(shù)組中檢索apple ,如果存在返回鍵名
array_key_exists("apple",$arr); 檢索給定的鍵名是否存在數(shù)組中
isset($arr[apple]): 檢索給定的鍵名是否存在數(shù)組中
數(shù)組的內(nèi)部指針
current($arr); 返回數(shù)組中的當(dāng)前單元
pos($arr); 返回數(shù)組中的當(dāng)前單元
key($arr); 返回數(shù)組中當(dāng)前單元的鍵名
prev($arr); 將數(shù)組中的內(nèi)部指針倒回一位
next($arr); 將數(shù)組中的內(nèi)部指針向前移動一位
end($arr); 將數(shù)組中的內(nèi)部指針指向最后一個單元
reset($arr; 將數(shù)組中的內(nèi)部指針指向第一個單元
each($arr); 將返回數(shù)組當(dāng)前元素的一個鍵名/值的構(gòu)造數(shù)組,并使數(shù)組指針向前移動一位
list($key,$value)=each($arr); 獲得數(shù)組當(dāng)前元素的鍵名和值
數(shù)組和變量之間的轉(zhuǎn)換
extract($arr);用于把數(shù)組中的元素轉(zhuǎn)換成變量導(dǎo)入到當(dāng)前文件中,鍵名當(dāng)作變量名,值作為變量值
注:(第二個參數(shù)很重要,可以看手冊使用)使用方法 echo $a;
compact(var1,var2,var3);用給定的變量名創(chuàng)建一個數(shù)組
二、數(shù)組的分段和填充
數(shù)組的分段
array_slice($arr,0,3); 可以將數(shù)組中的一段取出,此函數(shù)忽略鍵名
array_splice($arr,0,3,array("black","maroon")); 可以將數(shù)組中的一段取出,與上個函數(shù)不同在于返回的序列從原數(shù)組中刪除
分割多個數(shù)組
array_chunk($arr,3,TRUE); 可以將一個數(shù)組分割成多個,TRUE為保留原數(shù)組的鍵名
數(shù)組的填充
array_pad($arr,5,'x'); 將一個數(shù)組填補(bǔ)到制定長度
三、數(shù)組與棧
array_push($arr,"apple","pear"); 將一個或多個元素壓入數(shù)組棧的末尾(入棧),返回入棧元素的個數(shù)
array_pop($arr); 將數(shù)組棧的最后一個元素彈出(出棧)
四、數(shù)組與列隊
array_shift($arr);數(shù)組中的第一個元素移出并作為結(jié)果返回(數(shù)組長度減1,其他元素向前移動一位,數(shù)字鍵名改為從零技術(shù),文字鍵名不變)
array_unshift($arr,"a",array(1,2));在數(shù)組的開頭插入一個或多個元素
五、回調(diào)函數(shù)
array_walk($arr,'function','words'); 使用用戶函數(shù)對數(shù)組中的每個成員進(jìn)行處理(第三個參數(shù)傳遞給回調(diào)函數(shù)function)
array_mpa("function",$arr1,$arr2); 可以處理多個數(shù)組(當(dāng)使用兩個或更多數(shù)組時,他們的長度應(yīng)該相同)
array_filter($arr,"function"); 使用回調(diào)函數(shù)過濾數(shù)組中的每個元素,如果回調(diào)函數(shù)為TRUE,數(shù)組的當(dāng)前元素會被包含在返回的結(jié)果數(shù)組中,數(shù)組的鍵名保留不變
array_reduce($arr,"function","*"); 轉(zhuǎn)化為單值函數(shù)(*為數(shù)組的第一個值)
六、數(shù)組的排序
通過元素值對數(shù)組排序
sort($arr); 由小到大的順序排序(第二個參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
rsort($arr); 由大到小的順序排序(第二個參數(shù)為按什么方式排序)忽略鍵名的數(shù)組排序
usort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序(function中有兩個參數(shù),0表示相等,正數(shù)表示第一個大于第二個,負(fù)數(shù)表示第一個小于第二個)忽略鍵名的數(shù)組排序
asort($arr); 由小到大的順序排序(第二個參數(shù)為按什么方式排序)保留鍵名的數(shù)組排序
arsort($arr); 由大到小的順序排序(第二個參數(shù)為按什么方式排序)保留鍵名的數(shù)組排序
uasort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的值進(jìn)行排序(function中有兩個參數(shù),0表示相等,正數(shù)表示第一個大于第二個,負(fù)數(shù)表示第一個小于第二個)保留鍵名的數(shù)組排序
通過鍵名對數(shù)組排序
ksort($arr); 按照鍵名正序排序
krsort($arr); 按照鍵名逆序排序
uksort($arr,"function"); 使用用戶自定義的比較函數(shù)對數(shù)組中的鍵名進(jìn)行排序(function中有兩個參數(shù),0表示相等,正數(shù)表示第一個大于第二個,負(fù)數(shù)表示第一個小于第二個)
自然排序法排序
natsort($arr); 自然排序(忽略鍵名)
natcasesort($arr); 自然排序(忽略大小寫,忽略鍵名)
七、數(shù)組的計算
數(shù)組元素的求和
array_sum($arr); 對數(shù)組內(nèi)部的所有元素做求和運算
數(shù)組的合并
array_merge($arr1,$arr2); 合并兩個或多個數(shù)組(相同的字符串鍵名,后面的覆蓋前面的,相同的數(shù)字鍵名,后面的不會做覆蓋操作,而是附加到后面)
“+”$arr1+$arr2; 對于相同的鍵名只保留后一個
array_merge_recursive($arr1,$arr2); 遞歸合并操作,如果數(shù)組中有相同的字符串鍵名,這些值將被合并到一個數(shù)組中去。如果一個值本身是一個數(shù)組,將按照相應(yīng)的鍵名把它合并為另一個數(shù)組。當(dāng)數(shù)組 具有相同的數(shù)組鍵名時,后一個值將不會覆蓋原來的值,而是附加到后面
數(shù)組的差集
array_diff($arr1,$arr2); 返回差集結(jié)果數(shù)組
array_diff_assoc($arr1,$arr2,$arr3); 返回差集結(jié)果數(shù)組,鍵名也做比較
數(shù)組的交集
array_intersect($arr1,$arr2); 返回交集結(jié)果數(shù)組
array_intersect_assoc($arr1,$arr2); 返回交集結(jié)果數(shù)組,鍵名也做比較
八、其他的數(shù)組函數(shù)
range(0,12); 創(chuàng)建一個包含指定范圍單元的數(shù)組
array_unique($arr); 移除數(shù)組中重復(fù)的值,新的數(shù)組中會保留原始的鍵名
array_reverse($arr,TRUE); 返回一個單元順序與原數(shù)組相反的數(shù)組,如果第二個參數(shù)為TRUE保留原來的鍵名
//srand((float)microtime()*10000000); 隨機(jī)種子觸發(fā)器
array_rand($arr,2); 從數(shù)組中隨機(jī)取出一個或 多個元素
shuffle($arr); 將數(shù)組的順序打亂
求課吧有很多關(guān)于PHP編程方面的教程
8.4.4 Model類
getModelName() 獲取當(dāng)前Model的名稱
getTableName() 獲取當(dāng)前Model的數(shù)據(jù)表名稱
switchModel(type,vars=array()) 動態(tài)切換模型
table() 設(shè)置當(dāng)前操作的數(shù)據(jù)表
field() 設(shè)置要查詢的數(shù)據(jù)字段
where() 設(shè)置查詢或者操作條件
data(data) 設(shè)置數(shù)據(jù)對象
order(order) 設(shè)置排序
limit(limit) 查詢限制
page(page) 查詢分頁
join(join) 進(jìn)行JOIN查詢
having(having) 進(jìn)行having查詢
group(group) 進(jìn)行g(shù)roup查詢
lock(lock) 查詢鎖定
distinct(distinct) 唯一性查詢
count(field) 記錄統(tǒng)計
sum(field) 總數(shù)查詢
min(field) 最小值查詢
max(field) 最大值查詢
avg(field) 平均值查詢
_initialize() 模型初始化方法
_facade(data) 對保存到數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行處理
_before_write(data) 寫入數(shù)據(jù)前的回調(diào)方法 包括新增和更新
add(data='',options=array()) 新增數(shù)據(jù)
_before_insert(data,options) 寫入數(shù)據(jù)前的回調(diào)方法
_after_insert(data,options) 寫入數(shù)據(jù)后的回調(diào)方法
selectAdd(fields='',table='',options=array()) 通過Select方式添加記錄
save(data='',options=array()) 更新數(shù)據(jù)到數(shù)據(jù)庫
_before_update(data,options) 更新數(shù)據(jù)前的回調(diào)方法
_after_update(data,options) 更新成功后的回調(diào)方法
delete(options=array()) 刪除數(shù)據(jù)
_after_delete(data,options) 刪除成功后的回調(diào)方法
select(options=array()) 查詢數(shù)據(jù)集
_after_select(resultSet,options) 查詢成功后的回調(diào)方法
findAll(options=array()) select方法的別名
_options_filter(options) 表達(dá)式過濾回調(diào)方法
find(options=array()) 查詢數(shù)據(jù)
_after_find(result,options) 查詢成功的回調(diào)方法
setField(field,value,condition='') 設(shè)置記錄的某個字段值
setInc(field,condition='',step=1) 字段值增長
setDec(field,condition='',step=1) 字段值減少
getField(field,condition='',sepa=' ') 獲取某個字段值
create(data='',type='') 創(chuàng)建數(shù)據(jù)對象
autoCheckToken(data) 表單令牌驗證
query(sql) 執(zhí)行原生SQL查詢
execute(sql='') 執(zhí)行原生SQL操作
startTrans() 啟動事務(wù)
commit() 提交事務(wù)
rollback() 事務(wù)回滾
getError() 獲取模型的錯誤信息
getDbError() 獲取數(shù)據(jù)庫的錯誤信息
getLastInsID() 獲取最后執(zhí)行的SQL語句
getPk() 獲取主鍵名稱
getDbFields() 獲取數(shù)據(jù)表的字段信息
regex(value,rule) 使用正則驗證數(shù)據(jù)
setProperty(name,value) 設(shè)置模型的屬性值
2.1版新增方法:
db(linkNum,config='') 切換當(dāng)前數(shù)據(jù)庫連接
高級模型類AdvModel
topN(count,options=array()) 查詢滿足條件的前N個記錄
getN(position=0,options=array()) 查詢符合條件的第N條記錄
0 表示第一條記錄 -1 表示最后一條記錄
first(options=array()) 獲取滿足條件的第一條記錄
last(options=array()) 獲取滿足條件的最后一條記錄
returnResult(data,type='') 返回指定的數(shù)據(jù)類型
setLazyInc(field,condition='',step=1,lazyTime=0) 字段值延遲增長
setLazyDec(field,condition='',step=1,lazyTime=0) 字段值延遲減少
addConnect(config,linkNum=NULL) 增加數(shù)據(jù)庫連接
delConnect(linkNum) 刪除數(shù)據(jù)庫連接
closeConnect(linkNum) 關(guān)閉數(shù)據(jù)庫連接
switchConnect(linkNum,name='') 切換數(shù)據(jù)庫連接
patchQuery(sql=array()) 批處理執(zhí)行SQL語句
getPartitionTableName(data=array()) 得到分表的的數(shù)據(jù)表名
即使使用 PHP 多年 也會偶然發(fā)現(xiàn)一些未曾了解的函數(shù)和功能 其中有些是非常有用的 但沒有得到充分利用 并不是所有人都會從頭到尾一頁一頁地閱讀手冊和函數(shù)參考!
任意參數(shù)數(shù)目的函數(shù)
你可能已經(jīng)知道 PHP 允許定義可選參數(shù)的函數(shù) 但也有完全允許任意數(shù)目的函數(shù)參數(shù)的方法 以下是可選參數(shù)的例子
以下為引用的內(nèi)容
// function with optional arguments function foo($arg = $arg = ) {
echo "arg : $arg n"; ?echo "arg : $arg n";
}
foo( hello world ); /* prints: arg : hello arg : world */
foo(); /* prints: arg : arg : */
現(xiàn)在讓我們看看如何建立能夠接受任何參數(shù)數(shù)目的函數(shù) 這一次需要使用 func_get_args() 函數(shù)
以下為引用的內(nèi)容
// yes the argument list can be empty function foo() {
// returns an array of all passed arguments ?$args = func_get_args();
foreach ($args as $k = $v) { ??echo "arg" ($k+ ) ": $vn"; ?}
}
foo(); /* prints nothing */
foo( hello ); /* prints arg : hello */
foo( hello world again ); /* prints arg : hello arg : world arg : again */
使用 Glob() 查找文件
許多 PHP 函數(shù)具有長描述性的名稱 然而可能會很難說出 glob() 函數(shù)能做的事情 除非你已經(jīng)通過多次使用并熟悉了它 可以把它看作是比 scandir() 函數(shù)更強(qiáng)大的版本 可以按照某種模式搜索文件
以下為引用的內(nèi)容
// get all php files $files = glob( * php );
print_r($files); /* output looks like: Array ( ??? [ ] = phptest php ??? [ ] = pi php ??? [ ] = post_output php ??? [ ] = test php ) */
你可以像這樣獲得多個文件
以下為引用的內(nèi)容
// get all php files AND txt files $files = glob( * {php txt} GLOB_BRACE);
lishixinzhi/Article/program/PHP/201311/21182