phpforstep
① 如何對php字元串中的每一個字元操作
http://cn2.php.net/manual/zh/function.chr.php
http://cn2.php.net/manual/zh/function.ord.php
用這兩個函數實現最好,php處理字元的能力沒有c語言那麼強。
把這句:$resultString.=$str[$i]+1;
改成:$resultString.=chr(ord($str[$i])+1);
echodecode('abcde');//輸出bcdef
echodecode('xyz');//輸出yz{
<?php
functiondecode($str){
$resultString="";
for($i=0;$i<strlen($str);$i++){
$resultString.=chr(ord($str[$i])+1);//把字元轉換成ascii碼+1再轉回去
}
return$resultString;
}
echodecode('abcde');
echo'</br>';
echodecode('xyz');
?>
② thinkphp 如何從第二條開始循環
{forstart="開始值"end="結束值"comparison=""step="步進值"name="循環變數名"}
{/for}
//輸出其中的第5~15條記錄
{volistname="list"id="vo"offset="5"length='10'}
{$vo.name}
{/volist}
③ For to Step在PHP裡面用什麼表達
<?php
for($k=10;$k<=$to;$k+=4){
}
④ thinkphp5怎麼用內置標簽for
用法:
<forstart="開始值"end="結束值"comparison=""step="步進值"name="循環變數名">
</for>
開始值、結束值、步進值和循環變數都可以支持變數,開始值和結束值是必須,其他是可選。comparison 的默認值是lt;;name的默認值是i,步進值的默認值是1,舉例如下:
<forstart="1"end="100">
{$i}
</for>
解析後的代碼是
for($i=1;$i<100;$i+=1){
echo$i;
}
⑤ php中如何建立函數庫
Step 1 =>
php的擴展模塊都放在 ext/ 目錄下,比如說 snmp模塊、mysql模塊。 我們要建立自己的模塊,就要在ext目錄下為自己的模塊建一個目錄。比如,我們要做一個分析config文件的模塊,命名為pconfig模塊(parse config的簡寫),需在ext下建立目錄pconfig。將我寫好的7個文件到該目錄下,另外需對主目錄下的configure和internal_functions.c作一些修改。
Step 2 =>
Makefile.am Makefile.in
是模板文件,用戶執行configure時,會調用這兩個文件,生成編譯時所用的Makefile文件。修改時將小寫的pconfig換成你自己的模塊名,別忘了把大寫的PCONFIG也替換掉(不要告訴我你不會vi的替換語句)。config.m4也是執行configure將會調用的檢測腳本程序,以後我們來討論這些腳本程序的更深入的修改。現在你只需要把pconfig該成你的模塊就可以了。對config.h.stub和setup.stub也如法炮製。其實setup.stub也沒什麼用。
Step 3 =>
php3-pconfig.h 頭文件中
extern php3_mole_entry pconfig_mole_entry;
#define pconfig_mole_ptr &pconfig_mole_entry
#define phpext_pconfig_ptr pconfig_mole_ptr
這幾行定義了模塊的入口,將入口注冊到php後,php會通過模塊入口找到你寫的函數
下面幾個函數定義是用宏進行定義的,展開以後其實就是 php3_minit_pconfig , php3_rinit_pconfig ……分別在你的模塊初試化或結束時被調用,如果你的模塊很簡單,也就不需要這些定義了
extern PHP_MINIT_FUNCTION(pconfig);
extern PHP_RINIT_FUNCTION(pconfig);
extern PHP_MSHUTDOWN_FUNCTION(pconfig);
PHP_MINFO_FUNCTION(pconfig);
這是你的函數聲明,將來寫在php腳本語句中的函數名就是在PHP_FUNCTION中定義的名字。
PHP_FUNCTION(pconfig_test);
如果有多個,還可以繼續往下加
PHP_FUNCTION(pconfig_parsefile);
PHP_FUNCTION(pconfig_release); …….
Step 4 =>
接下來我們看最重點的C代碼了
function_entry pconfig_functions[] = {
PHP_FE(pconfig_test, NULL)
{NULL, NULL, NULL}
};
定義的是你的函數的入口(前面我們提到過模塊的入口),按照格式將你在頭文件中定義的函數寫進去吧。注意,這是用宏定義的,不要管語法是否正確。以後我們具體討論這些宏的用法。
php3_mole_entry pconfig_mole_entry = {
"pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES
};
注冊模塊的入口信息,比如模塊名,函數介面,初試化模塊將調用的函數等等,如果你的模塊不執行復雜操作的話,可以忽略掉他們,寫成
php3_mole_entry pconfig_mole_entry = {
"pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES
};
Step 5 =>
寫你自己的函數
在頭文件和function_entry處,我們已經定義了自己的函數pconfig_test,現在我們就來實現pconfig_test的功能。就比如執行兩個數相加的和吧。
static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)
{ ......
}
PHP_FUNCTION(pconfig_test)
{
_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
當系統調用pconfig_test時,會調用你的_php3_pconfig_test函數,當然你也可以把_php3_pconfig_test里的內容直接寫在PHP_FUNCTION(pconfig_test)中,這樣做只是程序結構比較清晰。注意:不要將_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展開後實際上就是php3_pconfig_test!
Step 6 =>
好了,現在我們開始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(當然,如果你熟悉configure的話,可以加在任何合適的地方)加上下面幾句話
if test "${with_pconfig+set}" = set; then
withval="$with_pconfig"
# Add your lib in here
EXTRA_LIBS="$EXTRA_LIBS"
# Add your include path in here
INCLUDES="$INCLUDES"
EXT_SUBDIRS="$EXT_SUBDIRS pconfig"
EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"
EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"
EXT_STATIC="$EXT_STATIC pconfig"
fi
修改internal_functions.c,在頭文件定義中加入#include "ext/pconfig/php3_pconfig.h"
在zend_mole_entry數組中加入phpext_pconfig_ptr,
Step 7 =>
從新configure,帶上需要的參數,不要忘記的是在參數里加入 --with-pconfig
Step 8 =>
index.php3
<? echo pconfig_test(123,678)."
"; ?>
執行%>php index.php3
810
⑥ 如何對php.tools.for.vs裡面的php的版本升級
到php官網下載最新的php,當前最新的版本是5.6.10,具體的如下:
http://windows.php.net/download#php-5.6
2
在目錄「C:\Program Files (x86)\IIS Express\PHP」下面新建目錄 v5.6.10,
並將剛才下載的包解壓到這個目錄中,如下圖所示:
END
修改IIS
1
打開「控制面板」->「系統和安全」->「管理工具」->
"Internet Information Services (IIS)管理器"
2
找到 php Manager
3
選擇「PHP Step」->"Register new PHP version"->"C:\Program Files (x86)\IIS Express\PHP\v5.6.10\php-cgi.exe"->確定
END
修改VS選項
選擇"Visual Studio 2015"->"Tools"->"Options"->"PHP Tools"->"Interpreter"->"Steup"->"PHP path",選擇
"C:\Program Files (x86)\IIS Express\PHP\v5.6.10"
點擊 Enable XDebug extension,在彈出的界面選擇 download
由於我的php的版本是32位,5.6.10的,線程安全版,所以我下載的是
PHP 5.6 VC11 TS(32 bit)
將包解壓到 "C:\Program Files (x86)\IIS Express\PHP\v5.6.10\ext\php_xdebug-2.3.2-5.6-vc11.dll"
打開 "C:\Program Files (x86)\IIS Express\PHP\v5.6.10\php.ini",在文件的後面添加如下代碼:
[WebPIChanges]error_log = "C:\Windows\Temp\php-5.6.10_errors.log"upload_tmp_dir = "C:\Windows\Temp\"session.save_path = C:\Windows\tempcgi.force_redirect = 0cgi.fix_pathinfo = 1fastcgi.impersonate = 1fastcgi.logging = 0max_execution_time = 300date.timezone = Asia/Bruneiextension_dir = "C:\Program Files (x86)\IIS Express\PHP\v5.6.10\ext\"
[XDEBUG]
zend_extension="C:\Program Files (x86)\IIS Express\PHP\v5.6.10\ext\php_xdebug-2.3.2-5.6-vc11.dll"
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = 127.0.0.1
xdebug.remote_port = 9000
xdebug.remote_mode = req
重新啟動vs,查看vs選項
⑦ ThinkPHP模板里怎麼使用 for循環
ThinkPHP模板里使用 for循環
①使用For標簽
用法:
<forstart="開始值"end="結束值"comparison=""step="步進值"name="循環變數名"></for>
開始值、結束值、步進值和循環變數都可以支持變數,開始值和結束值是必須,其他是可選。comparison 的默認值是lt;;name的默認值是i,步進值的默認值是1,
舉例如下:
<for start="1" end="100">{$i}</for>
解析後的代碼是:
for ($i=1;$i<100;$i+=1){ echo $i;}
②使用Php代碼
Php代碼可以和標簽在模板文件中混合使用,可以在模板文件裡面書寫任意的PHP語句代碼 ,包括下面兩種方式:
第一種:使用php標簽
例如:
<php>echo'Hello,world!';</php>
我們建議需要使用PHP代碼的時候盡量採用php標簽,因為原生的PHP語法可能會被配置禁用而導致解析錯誤。
第二種:使用原生php代碼
<?phpecho'Hello,world!';?>
注意:php標簽或者php代碼裡面就不能再使用標簽(包括普通標簽和XML標簽)了,因此下面的幾種方式都是無效的:
<php><eqname='name'value='value'>value</eq></php>
Php標簽裡面使用了eq標簽,因此無效
更多使用幫助請參見官網手冊:http://document.thinkphp.cn/manual_3_2.html
⑧ 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中如何把字元串按一定位元組數變成數組
自行修改$str字元串,以及$step變數即可。
<?php
$str = "";
$str_len = strlen($str);
$ret = array(); // 最終返回的數組
$step = 10; // 每10個字元長度存成一個數組
for ($i=0; $i<$str_len; $i+=$step) {
if (strlen($str) >= $step) {
$ret[] = substr($str, 0, $step);
$str = substr($str, $step);
} else {
$ret[] = $str;
}
}
print_r($ret);
?>