① 求一個一維數組內部元素的所有可能的組合的演算法用php實現
原理相當的簡單,就是依次向盤子裡面放abc三種水果,後面一個在前面的一堆方法基礎上再依次的放,放一個盤的時候有3種放法,兩個盤的時候有3*3種放法,三個盤的時候是3*3*3種放法,所以最後總數是3的5次方,也就是有243個組合。下面的代碼就是體現出這種邏輯。
<?php
$fruit=array('a','b','c');
$dishes[]=range(1,5);
for($i=0;$i<5;$i++){
foreach($dishes as $k=>$v){
foreach($fruit as $_fruit){
$v[$i]=$_fruit;
$dishes[]=$v;
}
unset($dishes[$k]);
}
}
$dishes=array_values($dishes);
foreach($dishes as $k=>$v)
echo $k+1,':',implode('',$v),'<br>';
?>
② PHP中如何利用foreach循環將一個多維數組賦值到另一個多維數組
PHP 多維數組的賦值與一維數組原理一樣
例如:
<?php
$array = array(array('a','b'),array('c','d'));
$array1 = array(array('a1','b1'),array('c1','d1'));
foreach($array1 as $value){
$array[] = $value;
}
?>
實際上原理是一樣的,多維數組就是復雜一些。
不過,對於多維數組的處理,邏輯思維得更強一些。
③ php知識框架總結
php知識框架總結
篇一:php基礎知識點總結
PHP語言基礎簡單整理
1.開始結束標記的格式只有在沒有判斷語句時才能使用。
對表單傳遞的變數進行編碼和解碼:PHP中實現對查詢字元串進行URL編碼可以通過函數urlencode()實現,該函數的使用格式如下:string urlencode(string str);對URL編碼後的查詢字元串進行解碼,可以通過urldecode()函數實現,該函數的使用格式如下:string urldecode(string str);
15.PHP連接資料庫:
步驟: 一、建立連接------mssql_connect(server,uid,pwd);
二、指定database-------mssql_select_db(databasename);
三、執行sql------mssql_query($sql,$link);
四、處理記錄集-------資源類型數據,格式:bof---數據---eof
五、以特定格式讀取數據-----mssql_fetch_array()....
六、釋放相關資源、關閉連接------mssql_free_result($result);mssql_close();
16.數組:php的數組由鍵值和value值組成
定義:$array = array("鍵值"=>"value","鍵值"=>"value","鍵值"=>"value");如果不給鍵值賦值,默認從0開始的int值
相關函數:(1)in_array("值",數組名); 返回bool型-----查看數組中是否存在某value值
(2)array_key_exists("key值",數組名); 返回bool型-----查看數組中是否存在某鍵值
(3)array_keys(數組名);---將數組鍵值返回出來形成一個新數組,此鍵值作為新數組的value值
(4)array_values(數組名);---將數組value值返回出來形成一個新數組,此值作為新數組的value值
(5)key(數組名);----返回當前指針指向的元素key值
(6)current(數組名);----返回當前指針指向的元素value值
(7)next(數組名);----挪動當前數組指針到下一步
(8)reset(數組名);----恢復數組指針,指向第0個元素
(9)end(數組名);----將指針挪向最後一個元素
(10)prev(數組名);----將指針向前挪動一位
(11)foreach(數組名 as $key=>$value)
{
$key是鍵值,$value是value值,實現數組遍歷
}
(12)each(數組名);----將當前數組元素依次取出(自動挪動指針)並放到一個新的數組中
(13)array_shift(數組名);----返回數組中第一個元素值
(14)array_pop(數組名);----返回數組最後一個元素值
(15)array_push(數組名,value);----向數組中追加元素
(16)array_unshift(數組名,value);----在數組最前面添加元素
(17)array_pad(數組名,數組長度,value);----向數組中追加多個元素,對數組副本操作,不改變原數組,返回一個新數組
(18)count();----返回個數
(19)array_unique(數組名);----去掉數組中重復部分,操作數組副本,不改變原數組,返回新數組
(20)sort(數組名);----從小到大升序排列數組value值,一般針對int型value值,返回bool型,成功返回true
(21)rsort(數組名);----從大到小,逆序排列數組value值
(22)array_combine(數組1,數組2);----將數組1的value值作為key,數組2的value值作為value值,形成一個新數組
(23)array_merge(數組1,數組2,數組3...);----合並多個數組,將多個數組value值依次合並,合為一個數組
(24)array_slice(數組名,int,int);----從目標數組截取元素,形成一個新數組。開始位置為第二個參數,結束位置為第三個參數。若第三個參數不寫,則默認是截取到最後。
(25)array_splice();----用法同array_slice();但是其截取部分從原數組中刪除
(26)explode("字元依據",目標字元串);----將字元串按照一定的依據拆分成數組
(27)implode("字元依據",目標數組);----將數組元素按照依據組合成一個字元串
(28)range(mixed low,mixed high[number step]);----生成數組,例:range(1,100,8);---即從1到100,每8位取一個數,組成一個數組
(29)shuffle(數組名);----用於將數組進行隨機排序
(30)array_sum(數組名);----對數值型數組元素值進行求和
(31)array_chunk(數組名,int);----分割目標數組,返回一個新數組,其中數組的每個元素都是一個一維數組,int參數為分割成的一維數組的長度
17.Cookie和會話控制:
Cookie是在HTTP協議下,伺服器或腳本可以維護客戶工作站上信息的一種方式。Cookie是由Web伺服器保存在客戶機上的小文本文件,它可以包含有關用戶的信息。無論何時用戶鏈接到伺服器,Web站點都可以訪問Cookie信息。
存在server端的是session,存在client端的是cookie,它們用來存儲全局變數。 設定Cookie值:setcookie("名","值");
通過Cookie數組取值:$_cookie["名"];
設置生成期:setcookie("名","值",time()+1800);生成期為當前時間加1800秒之後。
刪除cookie: setcookie("名","",time()-3600);中間值設置為空,並將當前時間減去3600秒。 Cookie數組:setcookie("名[key]","值"); 使用foreach讀取。
在PHP中可以通過$_COOKIE預定義變數訪問Cookie的值。如果設置了php.ini中的register_long_arrays,那麼就能夠應用$_COOKIE和$HTTP_COOKIE_VARS;如果在php.ini中還設置了register_globals,那麼就可以在PHP中作為全局變數使用各個Cookie值。但是,更改php.ini中的兩個文件設置,容易對PHP的安全構成威脅,不推薦使用該方法,建議使用更新的$_COOKIE。
會話ID的傳送
會話ID的傳送有兩種方式,一種是Cookie方式,另一種是URL方式。
Cookie傳送方式:
這是最簡單的會話方式,但是有些客戶可能限制使用Cookie,如果客戶限制使用Cookie的條件下,仍要繼續工作,那就要通過其他方式來實現了。
URL傳送方式:
在該方式中,URL本身用來傳送會話,會話標志被簡單地附加到URL的尾部,或者作為窗體中的一個變數來傳遞。例:
④ 如何向php數組中頭部和尾部添加元素
尾部添加元素
語法格式如下:
int array_push ( array &$array , mixed $var [, mixed $... ] )
參數 array 為指定的數組,參數 $var 為壓入數組中的值。
下面就是array_push()函數向數組尾部添加元素,具體示例代碼如下:
<?php
$array_push=array("1","2");//定義數組
array_push($array_push,"3","4");//添加元素
$array_push[]='5';
print_r($array_push);//輸出數組結果
array_unshift頭部添加元素
array_push的原理類似,只是方向不同。
語法格式如下:
int array_unshift ( array &$array , mixed $var [, mixed $... ] )
下面我們直接通過實例跟大家介紹array_unshift()函數,具體代碼如下:
<?php
$names=['andy','tom','jack'];
array_unshift($names,'joe','hank');
print_r($names);
⑤ PHP去除數組值兩邊的空格,分析一下這段代碼的原理
①如果是一維數組,你用array_map執行函數的時候,傳到$input里的都是值。此時在TrimArray裡面直接執行trim清除空格。
請注意,array_map的作用是針對整個數組的。此時只需執行一次,即可完成對整個一維數組的去空格處理。這個應該是你疑惑的關鍵點。可參考網頁鏈接
②如果是多維數組,傳到$input里的還是數組,此時才會執行遞歸操作,將多維數組逐步拆解成一維數組,後續操作同①
⑥ PHP到底有多糟糕
php是web開發第一語言,這已經是坐穩了的事實,因為使用簡單,工具完善,開發效率高等優點為它積聚了大量的粉絲,號稱世界上最好的語言。 然而,就算是世界上最好的語言也有缺陷,下面我挑幾個php語法層面不那麼好用的特性吐槽下。
變數面前的美元($)符號
我想不明白當初php語言的設計師是怎麼想的,為什麼非要在變數名面前加上這個美元符號?每次我書寫變數時必須要按一下shift +4鍵,用其它語言可以很流暢的寫代碼,在php中卻老是被按這個shift打斷整個過程,這除了能給程序員帶來麻煩,我實在看不到有其它一丁點的好處。網上流傳著的說法好像是因為帶美元符號代碼解析起來更容易, 性能更好。但是解釋類型的語言又不只有php ,為什麼其它語言就不用讓程序員打這個討厭的美元符號。每天看著滿屏的美元符號,我口袋裡的錢也沒見多一分呀。
訪問對象成員要使用箭頭符號
明明按一下點號(.)就可以方便快捷的搞定的問題,卻非要使用簡單符號(->)來代替,真的是借我一百個腦袋也想不明白php設計者在設計這個特性是什麼邏輯。難不成是因為php解釋器最終會把php的代碼轉換成c代碼執行,而c中訪問指針的成員就是使用箭頭符號的。如果是這樣那顯然是php的設計者們偷懶了,難到不能在轉換成c執行的過程中多一步將點號轉換為箭頭符號的過程嗎?不要告訴我又是因為性能問題而辦不到,他們就不能為程序員想想?
數組即能當列表也能當字典
寫一個函數,返回一個數組類型,但是在函數的外面,鬼知道這個數組是一個list還是一個map?寫php代碼不知道被這個特性坑過多少回,如果是別人寫的函數, 又沒有注釋,那非得跑進函數里看個明白才知道應該這么樣使用這個函數才是安全的。難到就不能把array拆成兩個獨立的類型分別代表list(列表)和map(字典)嗎?這能為程序提供很大的便利,寫的代碼也更加不會出錯。
匿名函數使用外部變數必須使用use關鍵字導入
這個特性不能說完全沒有優點,對於代碼的可維護性還是能起到正面的作用的,因為這么做能讓我知道我在匿名函數體裡面對於外部會有哪些依賴,讓代碼更可控。然而,這種寫法真的是非常的不方便,每次寫lambda時,要用到外部的變數時,都要使用use導入,把代碼搞的看起來很臃腫,而且,因為其它語言沒這個限制,習慣已經養成,所以每次都會忘記使用use導入,導致代碼出錯,增加排查問題的時間,這真的不是什麼好玩的事。
用include導入文件
當把代碼模塊化時,然後在其它文件中使用,每次都需要使用這個include把文件導入進來,而且還要考慮路徑的問題,在結構復雜的項目中,非常讓人蛋疼。而像Java和Python之類的語言中,代碼管理機制設計的非常好,想用什麼import進來就可以了,根本不用考慮路徑啊,文件名大小寫啊之類的問題,能大大的提升開發效率。雖然,有框架可以解決這類問題,但畢竟是外部實現,使用起來總歸不是那麼順暢。這也算是php一個比較大的毛病了。
總結的這五點算是php中存在問題的典範了,希望php團隊能加把勁,把這些問題在未來的版本中優化掉,讓開發者寫代碼時有更好的體驗,更高的效率,讓世界上最好的語言名副其實
⑦ 求各位大神幫幫忙,PHP $_post 數組 怎麼實現
有點沒看明白你提問的目的!
php數組的定義很寬泛,不需要預先定義變數,可以直接存放數據,有兩種形式:索引數組(不指定鍵,系統自動分配數字鍵)、關聯數組(自定義鍵,指定鍵)!
例如:想要獲得如下結構的二維數組(關聯數組)
[
'A'=>[
'type'=>'TYPE_SINGLE',
'day'=>'DAYMay12'
],
'B'=>[
'type'=>'TYPESINGLE_2',
'day'=>'DAYMay13'
],
'C'=>[
'type'=>'TYPESINGLE_3',
'day'=>'DAYMay14'
]
]
php定義代碼:
//第1種
$abc=[
'A'=>[
'type'=>'TYPE_SINGLE',
'day'=>'DAYMay12'
],
'B'=>[
'type'=>'TYPESINGLE_2',
'day'=>'DAYMay13'
],
'C'=>[
'type'=>'TYPESINGLE_3',
'day'=>'DAYMay14'
]
];
//第2種
$abc2=[];//定義並重置變數,此行可不寫
$abc2['A']['type']='TYPE_SINGLE';
$abc2['A']['day']='DAYMay12';
$abc2['B']['type']='TYPE_SINGLE_2';
$abc2['B']['day']='DAYMay13';
$abc2['C']['type']='TYPESINGLE_3';
$abc2['C']['day']='DAYMay14';
//第3種(1、2的混合用法)
$abc3['A']=['type'=>'TYPE_SINGLE','day'=>'DAYMay12'];
$abc3['B']=['type'=>'TYPE_SINGLE_2','day'=>'DAYMay13'];
$abc3['C']=['type'=>'TYPE_SINGLE_3','day'=>'DAYMay14'];
以上三種寫法是常用寫法,還有其他形式,php數組功能很強大,可以存放任意數據類型,寫法也很隨意!$abc、$abc2、$abc3數據結構相同,但是$abc會重置內部結構。
註:$_POST是全局變數,適合從中獲取(請求)數據,不建議你修改其內部數據&結構,防止鍵名沖突,破壞全局變數的結構。如果你修改了$_POST,的確,$_POST['A']['type']能得到字元串'TYPE_SINGLE'!