求一PHP算法,字典生成。時間一到再加100分。如:字符:0-9,長度:1,
成都創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站制作、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元小店做網(wǎng)站,已為上家服務(wù),為小店各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
那就生成0,1,2,3,4,5,6,7,8,9
長度:2,就會生成00-99
現(xiàn)在要求字符可以包括a-z,或者其他特殊符號,求一高效的生成算法。
參考答案一
function get_string($strlen){
$source='0123456789'; //任意字符
$len = strlen($source); //長度
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 0;$j $strlen;$j++){
$return[$i] .= $i;
}
}
return implode(',', $return);
}
如果輸入長度2: 輸出結(jié)果就是:
00,11,22,33,44,55,66,77,88,99
參考答案二
優(yōu)化了進位算法:
PHP code =0;$no--){ $word=$source{$series[$no]}.$word; $series[$no]+=$tonext_value; if($no0){ if($series[$no]==$len){ $series[$no]=0; $tonext_value=1; }else{ $tonext_value=0; } } } echo "$word "; } } gene_dic(2); ?
簡單的說,我會把這個理解為0-9(十進制)下十個數(shù)字生成兩位數(shù)字、可重復(fù)的排列問題。
排列算法我自己建立過的就是簡單的N進制下的+1算法,保證可以遍歷。
即:
初始化到0,
1. +1
2. 是否超過要生成的位數(shù)?否,則回到1;
3. 輸出
參考答案三
PHP code =0;$no--){//循環(huán)遍歷數(shù)組每次從源字串中取一個字符,為便于進位運算,取字符是從后往前取 $word=$source{$series[$no]}.$word;//先取出一個字符 //取出一個字符后就要判斷當(dāng)前數(shù)組元素如何如果改變值,為下一次“大循環(huán)”做準(zhǔn)備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環(huán)都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時就進位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進位 } }elseif($no$n-1){//中間位的進位判斷 $series[$no]+=$tonext_value;//先取得上一位的進位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續(xù)進位 }else{ $tonext_value=0;//不歸零就不進位 } }else{ $series[$no]+=$tonext_value;//大循環(huán)次數(shù)決定了“老大”是只進不出的。 } } echo "$word ";//輸入單詞 } } gene_dic(2);//測試,結(jié)果OK。
參考答案四
PHP code =0;$no--){//循環(huán)遍歷數(shù)組每次從源字串中取一個字符,為便于進位運算,取字符是從后往前取 $word=$source{$series[$no]}.$word;//先取出一個字符 //取出一個字符后就要判斷當(dāng)前數(shù)組元素如何如果改變值,為下一次“大循環(huán)”做準(zhǔn)備 if($no==$n-1){//末位的判斷,它比較特殊,每次大循環(huán)都要增值 if($series[$no]==$len-1){ $series[$no]=0; $tonext_value=1;//歸零時就進位 }else{ $series[$no]+=1; $tonext_value=0;//未歸零就增值,不進位 } }elseif($no$n-1){//中間位的進位判斷 $series[$no]+=$tonext_value;//先取得上一位的進位值 if($series[$no]==$len){ $series[$no]=0; $tonext_value=1;//歸零了就繼續(xù)進位 }else{ $tonext_value=0;//不歸零就不進位 } }else{ $series[$no]+=$tonext_value;//大循環(huán)次數(shù)決定了“老大”是只進不出的。 } } echo "$word ";//輸入單詞 } } gene_dic(2);//測試,結(jié)果OK。
參考答案五
應(yīng)該是:
function get_string($strlen){
$source='0123456789';
$len = strlen($source);
$return = array();
for($i = 0 ;$i $len;$i++){
for($j = 1;$j = $strlen;$j++){
$return[$i] .= substr($source,$i,1);
}
}
return implode(',', $return);
}
【拓展閱讀】如何開始一門語言的學(xué)習(xí)
一門語言從發(fā)明到演進必有原因。
現(xiàn)在還有很多人推薦學(xué)習(xí)不同的語言。通過比較,了解它的發(fā)展史,
創(chuàng)始人的初心等因素都需要留意。多個思考,這個語言在5年,在10年后還是否保持活力?
當(dāng)有幾個類似的語言被選擇時,我們不妨對它們做一個Swat分析。
列出這些語言的共同點,還有它們之間的規(guī)則差異。
了解語言的發(fā)展史
開發(fā)語言從匯編開始,如最早的計算機ENIAC,使用的就是它來編程。
再到Fortarin,再到C語言,Cobol,Basic。每一個語言都與當(dāng)時發(fā)展的階段有點密切關(guān)聯(lián)。
人類的每個發(fā)明都與懶惰有關(guān),語言也是為便捷性而生。有的語言
C是除匯編外最重視效率的語言,擴展的C++也繼承了此特性。Perl是做文本處理效率最佳的語言,雖然它的發(fā)展有點慢。PHP做Web開發(fā),是“世界上最好的.語言”,Python的閱讀性和大數(shù)據(jù)處理都做得樣樣俱佳。
當(dāng)了解語言的歷史沿革后,會讓我們對其創(chuàng)始人有很強烈的興趣,成為忠實的腦殘粉,學(xué)習(xí)該語言的興趣會更濃烈。
人們常常說某個語言比哪個好,這其實沒有必要。不必要為其它人的語言所惑,需要你自己做出選擇。
語言的共通點
這個星球的人都是一個鼻子兩雙只水汪汪的大眼睛,與人們的模樣一般,編程語言也有一個大致相同的長相。
語法:這是開發(fā)此語言定義的規(guī)則“套路”:
運算符順序,變量常量定義/作用域,表達式定義,字符串定義,行尾結(jié)束符等。
流程控制:循環(huán)控制
這些語法都是成對的,如if,for,while,foreach,有的語言還提供goto這樣類似匯編語言的語法。
函數(shù)與方法
一些能夠復(fù)用的高質(zhì)量代碼組合。函數(shù)執(zhí)行后有返回,有遞歸,有嵌套,還有干完活就完事的簡單任務(wù)。有靜態(tài)函數(shù)和動態(tài)函數(shù)區(qū)分。
容器
數(shù)組,哈希表(也叫散列),字典等用來保存數(shù)據(jù)的容器。
錯誤/例外處理
現(xiàn)代編程語言基本都支持出錯的拋出,除了C語言之外。
比如硬盤不足,網(wǎng)絡(luò)出錯,黑客攻擊等情形。就像購物中心里出現(xiàn)煤氣泄露時,監(jiān)測設(shè)備,物聯(lián)網(wǎng)設(shè)備能夠及時記錄與傳遞給指揮中心。
沒有錯誤拋出的語言,需要自己考慮盡可能出錯的場景并處理,比如:
if(is_overfllow)
//處理
if(network_error)
//處理
可以還有不少需要關(guān)注的維度,這會讓代碼變得艱澀難懂,也難以維護。
我們可以用這樣的方式,讓其更簡潔:
on error goto ERROR
ERROR:
..//
但這總是會需要我們照顧很多情形。于是C++推出了一個語法:
try{
//可能會出錯的代碼
//可能會出錯的代碼
}catch{
//處理出錯的邏輯
//處理出錯的邏輯
}finally{
//出不出錯都要執(zhí)行的代碼
}
最后一句是微軟公司給業(yè)界提供貢獻的finally代碼塊。
以上這些成為語言處理異常機制的基礎(chǔ)。
容器
容器是很重要的一節(jié),所以我們單獨再提出來。很多邏輯處理,使用容器保存數(shù)據(jù),該語言會提供便捷的方法來提供存取。
比如C、Perl、PHP、Ruby中均提供的數(shù)組和關(guān)聯(lián)數(shù)組,LISP提供的列表,Java、Python提供的元組、鏈表等。
雖然名字相同,但是實現(xiàn)方式卻是完全不同,使用方法當(dāng)然也不一樣。
沒有萬能的容器,只有最合適的??梢詮墓?jié)省內(nèi)存,節(jié)約時間還是編碼效率等綜合考慮。
字符串與字符編碼
是否支持unicode編碼。從摩斯碼到ASCII到統(tǒng)一的Unicode編碼支持。
并發(fā)處理
有的語言在設(shè)計時并無此方面的考慮,或者天生設(shè)計存在缺陷。
即多線程,多進程的概念。包括共享,鎖,事備等特性。
面向?qū)ο?/p>
支持類,繼承,模塊,包,命名空間,閉包等。有這些特性才會讓人們的工作變得更便利、更有效率。
小結(jié)
學(xué)習(xí)一門語言的關(guān)鍵,需要我們在平靜地心緒下,帶著濃厚的興趣去學(xué)習(xí),在比較中學(xué)習(xí),在歷史中學(xué)習(xí)。
有時候感覺還是不夠通暢,先做知識的搬運工也是不錯。另外,不斷的實踐會讓我們的信心更足。
mysql字符串轉(zhuǎn)換成字典可以用php數(shù)據(jù)表轉(zhuǎn)換成數(shù)據(jù)字典的程序。網(wǎng)上找到別人寫好的php數(shù)據(jù)表轉(zhuǎn)換成數(shù)據(jù)字典的程序export2.php,修改export2.php中連接數(shù)據(jù)庫的信息(數(shù)據(jù)庫IP、數(shù)據(jù)庫名稱、訪問數(shù)據(jù)庫的賬號密碼。
PHP生成 URL-encode 之后的請求字符串: http_build_query函數(shù)詳解http_build_query
(PHP 5)
http_build_query — 生成 URL-encode 之后的請求字符串說明
string http_build_query ( array $formdata [, string $numeric_prefix ] )使用給出的關(guān)聯(lián)(或下標(biāo))數(shù)組生成一個經(jīng)過 URL-encode 的請求字符串。參數(shù) formdata 可以是數(shù)組或包含屬性的對象。一個 formdata 數(shù)組可以是簡單的一維結(jié)構(gòu),也可以是由數(shù)組組成的數(shù)組(其依次可以包含其它數(shù)組)。如果在基礎(chǔ)數(shù)組中使用了數(shù)字下標(biāo)同時給出了 numeric_prefix 參數(shù),此參數(shù)值將會作為基礎(chǔ)數(shù)組中的數(shù)字下標(biāo)元素的前綴。這是為了讓 PHP 或其它 CGI 程序在稍后對數(shù)據(jù)進行解碼時獲取合法的變量名。
Example #1 http_build_query() 使用示例
?php
$data = array('foo'='bar',
'baz'='boom',
'cow'='milk',
'php'='hypertext processor');
echo http_build_query($data); // foo=barbaz=boomcow=milkphp=hypertext+processor?
Example #2 http_build_query() 使用數(shù)字下標(biāo)的元素?php
$data = array('foo', 'bar', 'baz', 'boom', 'cow' = 'milk', 'php' ='hypertext processor');echo http_build_query($data);
/* 輸出:
0=foo1=bar2=baz3=boomcow=milkphp=hypertext+processor*/
echo http_build_query($data, 'myvar_');
/* 輸出:
myvar_0=foomyvar_1=barmyvar_2=bazmyvar_3=boomcow=milkphp=hypertext+processor*/
?
Example #3 http_build_query() 使用復(fù)雜的數(shù)組?php
$data = array('user'=array('name'='Bob Smith','age'=47,
'sex'='M',
'dob'='5/12/1956'),
'pastimes'=array('golf', 'opera', 'poker', 'rap'),'children'=array('bobby'=array('age'=12,'sex'='M'),
'sally'=array('age'=8,
'sex'='F')),
'CEO');
echo http_build_query($data, 'flags_');
?
本例將輸出(為可讀性進行了折行):
user[name]=Bob+Smithuser[age]=47user[sex]=Muser[dob]=5%1F12%1F1956pastimes[0]=golfpastimes[1]=operapastimes[2]=pokerpastimes[3]=rapchildren[bobby][age]=12children[bobby][sex]=Mchildren[sally][age]=8children[sally][sex]=Fflags_0=CEO
Note:
只有基礎(chǔ)數(shù)組中的數(shù)字下標(biāo)元素“CEO”才獲取了前綴,其它數(shù)字下標(biāo)元素(如 pastimes 下的元素)則不需要為了合法的變量名而加上前綴。
Example #4 http_build_query() 使用對象
?php
class myClass {
var $foo;
var $baz;
function myClass()
{
$this-foo = 'bar';
$this-baz = 'boom';
}
}
$data = new myClass();
echo http_build_query($data); // foo=barbaz=boom?
當(dāng)前文章:php字典數(shù)據(jù) phpshort
網(wǎng)站地址:http://chinadenli.net/article42/ddeicec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、外貿(mào)建站、企業(yè)建站、微信小程序、網(wǎng)站制作、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)