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);
?>