PHP等额本息,等额本金计算方式例子

 更新时间:2016年11月25日 15:31  点击:1623
在做房产开发时我们经常会要做计算器了,这个就有了我们下面的等额本息,等额本金算法了,下面来看一个用PHP等额本息,等额本金计算方式例子,具体如下所示。

最近做项目碰到了等额本金和等额本息的问题,若您不了解这两种方式 点这里看 否则直接跳过看代码,此代码也可以用于房贷计算器项目的开发。

等额本息计算公式:〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕

等额本金计算公式:每月还款金额 = (贷款本金 ÷ 还款月数)+(本金 — 已归还本金累计额)×每月利率

其中^符号表示乘方。

举例说明

假设以10000元为本金、在银行贷款10年、基准利率是6.65%,比较下两种贷款方式的差异:

等额本息还款法

月利率=年利率÷12=0.0665÷12=0.005541667
月还款本息=〔10000×0.005541667×(1+0.005541667)^120〕÷〔(1+0.005541667)^120-1〕=114.3127元
合计还款 13717.52元
合计利息 3717.52万元
181.4511278796992481203007518797 1.12502104984600E+271 1.005541667^120-1 0.9409241291

等额本金还款法 :

每月还款金额 = (贷款本金÷还款月数)+(本金 — 已归还本金累计额)×每月利率
=(10000 ÷120)+(10000— 已归还本金累计额)×0.005541667
首月还款 138.75元 每月递减0.462元
合计还款 13352.71元
利息 3352.71元

等额本息

 代码如下 复制代码

function debx()
{
$dkm     = 240; //贷款月数,20年就是240个月
$dkTotal = 10000; //贷款总额
$dknl    = 0.0515;  //贷款年利率
$emTotal = $dkTotal * $dknl / 12 * pow(1 + $dknl / 12, $dkm) / (pow(1 + $dknl / 12, $dkm) - 1); //每月还款金额
$lxTotal = 0; //总利息
for ($i = 0; $i < $dkm; $i++) {
$lx      = $dkTotal * $dknl / 12;   //每月还款利息
$em      = $emTotal - $lx;  //每月还款本金
echo "第" . ($i + 1) . "期", " 本金:", $em, " 利息:" . $lx, " 总额:" . $emTotal, "<br />";
$dkTotal = $dkTotal - $em;
$lxTotal = $lxTotal + $lx;
}
echo "总利息:" . $lxTotal;
}

等额本金

 代码如下 复制代码

function debj()
{
$dkm     = 240; //贷款月数,20年就是240个月
$dkTotal = 10000; //贷款总额
$dknl    = 0.0515;  //贷款年利率

$em      = $dkTotal / $dkm; //每个月还款本金
$lxTotal = 0; //总利息
for ($i = 0; $i < $dkm; $i++) {
$lx      = $dkTotal * $dknl / 12; //每月还款利息
echo "第" . ($i + 1) . "期", " 本金:", $em, " 利息:" . $lx, " 总额:" . ($em + $lx), "<br />";
$dkTotal -= $em;
$lxTotal = $lxTotal + $lx;
}
echo "总利息:" . $lxTotal;
}

本文章来为各位给各位介绍一篇关于Yii添加百度编辑器 ueditor 扩展例子,希望这篇教程能够帮助到各位。

这是别人写的一个yii1的百度编辑器ueditor的扩展,站长我已经用在了自己的项目中,现在记录下用法和使用中出现的问题。

目录结构

baiduUeditor
|--resource //ueditor资源包
|--views //widget的视图
|--config.php //后端配置文件 包括文件格式 大小 目录 路径 文件名等等
|--UeditorController.php //后端主控制器 可以修改继承类为自定义的基类
|--UeditorWidget.php //widget主要渲染编辑器
|--Uploader.class.php //上传等主要处理类

使用

1、将baiduUeditor拷贝到protected/extensions/目录下
2、添加以下代码到config/main.php


'controllerMap'=&gt;array(
'ueditor'=&gt;array(
'class'=&gt;'ext.baiduUeditor.UeditorController',
),
),

如果你想只在某个module里使用,请添加以下代码到modules/moduleName/moduleNameModule.php的init方法中


$this-&gt;controllerMap=array(
'ueditor'=&gt;array(
'class'=&gt;'ext.baiduUeditor.UeditorController',
),
);

在要显示编辑器的view中放置如下代码


$this-&gt;widget('ext.baiduUeditor.UeditorWidget',
array(
'id'=&gt;'article_content',//容器的id 唯一的[必须配置]
'name'=&gt;'content',//post到后台接收的name [必须配置]
'content'=&gt;'',//初始化内容 [可选的]

//配置选项,[可选的]
//将ueditor的配置项以数组键值对的方式传入,具体查看ueditor.config.js
//不要配置serverUrl(即使配置也会被覆盖)程序会自动处理后端url
'config'=&gt;array(
'toolbars'=&gt;array(array('fullscreen', 'source', '|')),//toolbars注意是嵌套两个数组
'lang'=&gt;'zh-cn'
)
)
);
按照上边的步奏,不出意外的话,编辑器肯定会显示在页面上。

问题:上传图片不能用会报,后端配置项没有正常加载,上传插件不能正常使用的错误。

解决方法:目录结构中有这个UeditorController.php文件,请将此文件放到你网站的controller目录下,因为上传图片最终会访问到此文件,我网站的访问路径是/admin/index.php?r=ueditor&action=config&&noCache=1464083990339,看到这个路径应该就明白了吧。不懂的在加群问我吧!群QQ:66357155

PHP中fwrite与file_put_contents在细节上在区别但在性能上file_put_contents更强大了,我们下面举例来对比一下吧。

相同点:file_put_contents() 函数把一个字符串写入文件中,与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。

不同点:在file_put_contents()函数中使用 FILE_APPEND 可避免删除文件中已有的内容,即实现多次写入同一个文件时的追加功能。

例如: 

echo file_put_contents("test.txt","Hello World. Testing!",FILE_APPEND);

file_put_contents是以追加的形式将字符串写入到test.txt中,

fwrtie则是会清除之前的记录,只保留当前写入的内容

$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);

file_put_contents代替fwrite优点多多

如下为file_put_contents的实例代码:

<?php
$filename = 'file.txt';
$word = "你好!\r\nwebkaka";  //双引号会换行 单引号不换行
file_put_contents($filename, $word);
?>

同样的功能使用fwrite的实例代码:

<?php
$filename = 'file.txt';
$word = "你好!\r\nwebkaka";  //双引号会换行  单引号不换行
$fh = fopen($filename, "w"); //w从开头写入 a追加写入
echo fwrite($fh, $word);
fclose($fh);
?>

从以上两个例子看出,其实file_put_contents是fopen、fwrite、fclose三合一的简化写法,这对程序代码的优化是有好处的,一方面在代码量上有所减少,另一方面不会出现fclose漏写的不严密代码,在调试、维护上方便很多。

上述例子里,file_put_contents是从头写入,如果要追加写入,怎么办呢?

在file_put_contents的语法里,有个参数FILE_APPEND,这是追加写入的声明。实例代码如下:

<?php
echo file_put_contents('file.txt', "This is another something.", FILE_APPEND);
?>

FILE_APPEND就是追加写入的声明。在追加写入时,为了避免其他人同时操作,往往需要锁定文件,这时需要加多一个LOCK_EX的声明,写法如下:

<?php
echo file_put_contents('file.txt', "This is another something.", FILE_APPEND|LOCK_EX);
?>

注意,以上代码中echo输出到显示器里的是写入文件字符串的长度。

常见问题:

Warning: fopen(file.txt) [function.fopen]: failed to open stream: Permission denied

当写入文件时,有时会遇到上述问题,这是因为文件没有写权限的原因。为了避免这个错误的出现,在写入文件时需要判断下文件是否可写,这需要用到is_writable()这个函数。实例代码如下:

<?php
$filename = 'file.txt';
if (is_writable($filename)) {
echo file_put_contents($filename, "This is another something.", FILE_APPEND);
} else {
    echo "文件 $filename 不可写";
}
?>

fwrite简单的把数据写到handler里面
file_put_contents可能需要处理contenxt,数据类型为mixed,需要更多处理
虽然看file_put_contents的函数说明:和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
但是肯定有细微差别的,尤其是在重复写入大量数据的时候,file_put_contents无疑会重复的fopen,fclose .而 fwrite则可以只一次fopen,fwrite即可

写个简单程序测试一下,一个250M文件

<!--
<?php
$len = 1024*1024*25;
$data = str_repeat(“-”,$len);

$start = microtime(true);
$fp = fopen(“/tmp/b”,”w”);
fwrite($fp,$data,$len);
fclose($fp);
$end = microtime(true);
echo “elipsed time:”.($end-$start).”\n”;

$start = microtime(true);
file_put_contents(“/tmp/a”,$data);
$end = microtime(true);
echo “elipsed time:”.($end-$start).”\n”;

silver@silver-desktop:~/php$ php fwrite_VS_file_put_contents.php
elipsed time:6.0958020687103
elipsed time:9.6280250549316
silver@silver-desktop:~/php$ php fwrite_VS_file_put_contents.php
elipsed time:6.247565984726
elipsed time:9.0449070930481

-->


结论:多次执行结果类试,说明fopen,fwrite,fclose方式比直接file_put_contents要快一点!

那么为什么呢? 查看源代码

我用的ubuntu12.04
直接sudo apt-get source php5
解压:silver@silver-desktop:~/php/php5-5.3.3

查找函数fwrite 函数:silver@silver-desktop:~/php/php5-5.3.3$ grep -rn “PHP_FUNCTION(fwrite)” .
./ext/standard/file.c:1233:PHPAPI PHP_FUNCTION(fwrite)
./ext/standard/file.h:43:PHPAPI PHP_FUNCTION(fwrite);

fwrite

找到对应源码,该函数非常简单:

<!--
PHP_FUNCTION(fwrite)
{
zval *arg1;
char *arg2;
int arg2len;
int ret;
int num_bytes;
long arg3 = 0;
char *buffer = NULL;
php_stream *stream;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, “rs|l”, &arg1, &arg2, &arg2len, &arg3) == FAILURE) {
RETURN_FALSE;
}

if (ZEND_NUM_ARGS() == 2) {
num_bytes = arg2len;
} else {
num_bytes = MAX(0, MIN((int)arg3, arg2len));
}

if (!num_bytes) {
RETURN_LONG(0);
}

PHP_STREAM_TO_ZVAL(stream, &arg1);

if (PG(magic_quotes_runtime)) {
buffer = estrndup(arg2, num_bytes);
php_stripslashes(buffer, &num_bytes TSRMLS_CC);
}
ret = php_stream_write(stream, buffer ? buffer : arg2, num_bytes);
if (buffer) {
efree(buffer);
}

RETURN_LONG(ret);
}
-->

file_put_contents
该函数的处理操作就多多了


<!--
PHP_FUNCTION(file_put_contents)
{
php_stream *stream;
char *filename;
int filename_len;
zval *data;
int numbytes = 0;
long flags = 0;
zval *zcontext = NULL;
php_stream_context *context = NULL;
php_stream *srcstream = NULL;
char mode[3] = “wb”;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, “sz/|lr!”, &filename, &filename_len, &data, &flags, &zcontext) == FAILURE) {
return;
}
if (Z_TYPE_P(data) == IS_RESOURCE) {
php_stream_from_zval(srcstream, &data);
}

context = php_stream_context_from_zval(zcontext, flags & PHP_FILE_NO_DEFAULT_CONTEXT);

if (flags & PHP_FILE_APPEND) {
mode[0] = ‘a’;
} else if (flags & LOCK_EX) {
/* check to make sure we are dealing with a regular file */
if (php_memnstr(filename, “://”, sizeof(“://”) – 1, filename + filename_len)) {
if (strncasecmp(filename, “file://”, sizeof(“file://”) – 1)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Exclusive locks may only be set for regular files”);
RETURN_FALSE;
}
}
mode[0] = ‘c’;
}
mode[2] = ‘\0′;

stream = php_stream_open_wrapper_ex(filename, mode, ((flags & PHP_FILE_USE_INCLUDE_PATH) ? USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL, context);
if (stream == NULL) {
RETURN_FALSE;
}
if (flags & LOCK_EX && (!php_stream_supports_lock(stream) || php_stream_lock(stream, LOCK_EX))) {
php_stream_close(stream);
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Exclusive locks are not supported for this stream”);
RETURN_FALSE;
}

if (mode[0] == ‘c’) {
php_stream_truncate_set_size(stream, 0);
}

switch (Z_TYPE_P(data)) {
case IS_RESOURCE: {
size_t len;
if (php_stream_copy_to_stream_ex(srcstream, stream, PHP_STREAM_COPY_ALL, &len) != SUCCESS) {
numbytes = -1;
} else {
numbytes = len;
}
break;
}
case IS_NULL:
case IS_LONG:
case IS_DOUBLE:
case IS_BOOL:
case IS_CONSTANT:
convert_to_string_ex(&data);

case IS_STRING:
if (Z_STRLEN_P(data)) {
numbytes = php_stream_write(stream, Z_STRVAL_P(data), Z_STRLEN_P(data));
if (numbytes != Z_STRLEN_P(data)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Only %d of %d bytes written, possibly out of free disk space”, numbytes, Z_STRLEN_P(data));
numbytes = -1;
}
}
break;

case IS_ARRAY:
if (zend_hash_num_elements(Z_ARRVAL_P(data))) {
int bytes_written;
zval **tmp;
HashPosition pos;

zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(data), &pos);
while (zend_hash_get_current_data_ex(Z_ARRVAL_P(data), (void **) &tmp, &pos) == SUCCESS) {
if (Z_TYPE_PP(tmp) != IS_STRING) {
SEPARATE_ZVAL(tmp);
convert_to_string(*tmp);
}
if (Z_STRLEN_PP(tmp)) {
numbytes += Z_STRLEN_PP(tmp);
bytes_written = php_stream_write(stream, Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp));
if (bytes_written < 0 || bytes_written != Z_STRLEN_PP(tmp)) {
if (bytes_written < 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Failed to write %d bytes to %s”, Z_STRLEN_PP(tmp), filename);

} else {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Only %d of %d bytes written, possibly out of free disk space”, bytes_written, Z_STRLEN_PP(tmp));
}
numbytes = -1;
break;
}
}
zend_hash_move_forward_ex(Z_ARRVAL_P(data), &pos);
}
}
break;

case IS_OBJECT:
if (Z_OBJ_HT_P(data) != NULL) {
zval out;
//看看对像怎么保存的:)
if (zend_std_cast_object_tostring(data, &out, IS_STRING TSRMLS_CC) == SUCCESS) {
numbytes = php_stream_write(stream, Z_STRVAL(out), Z_STRLEN(out));
if (numbytes != Z_STRLEN(out)) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, “Only %d of %d bytes written, possibly out of free disk space”, numbytes, Z_STRLEN(out));
numbytes = -1;
}
zval_dtor(&out);
break;
}
}
default:
numbytes = -1;
break;
}
php_stream_close(stream);

if (numbytes < 0) {
RETURN_FALSE;
}

RETURN_LONG(numbytes);
}
-->


什么时候用fwrite,file_put_contents ?

1,函数原型已经说明了它们处理的数据类型不一样
2,简单的文件处理,追求速度用fwrite
3,书写简单用file_put_contents – (啥类型的数据都能处理,magic阿。但是要理解类型判断机制,否则保存的数据可能不是你想要的)

xdebug可以调试程序出错时的错误代码行数及错误代码细节了,我们下面来看一篇phpstorm+xdebug远程调试服务器PHP代码的教程,具体的如下。

phpstorm+xdebug如何调试本地代码,代码应该都熟悉了。本文说的是如何调试线上服务器的代码。我的PHP环境是lnmp1.2。

安装xdebug

在服务器上执行

pecl install xdebug
就会安装好xdebug.so模块。

编辑配置

编辑 /usr/local/php/etc/php.ini 在末尾加上以下代码:

[Xdebug]
zend_extension="xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=你本地的公网IP
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.idekey="PHPSTORM"

更改完毕后在终端执行

lnmp php-fpm reload

服务器的配置到此为止。接下来看IDE的配置。

配置Server

打开Settings=>Languages & Frameworks=>PHP=>Servers

红框中的信息都是线上服务器的信息。

配置DBGp Proxy

打开Settings=>Languages & Frameworks=>PHP=>Debug=>DBGp Proxy

其中红框处需要和服务器的xdebug配置文件一致。

路由端口映射

由于大部分朋友公司都有路由器的,所以本机IP是局域网IP,这里需要将路由器的端口映射到本地。具体规则如下:

服务器Xdebug端口=>本地端口,笔者这里把路由器的9000端口映射到本地的9000端口。

开始调试

打开项目的运行配置,选择“PHP Web Application”

笔者服务器这里是https的,所以加了https,各位读者请根据实际情况填写网址。

点击IDE的“电话”图标开启远程监听。

打开代码,在如图位置断点

点击“瓢虫”图标,

IDE下方已经可以检测到调试了。

PHP发送POST请求我们使用的是curl来操作了,下面来看看一些常用的post数据的例子,具体的一起和111cn小编来看看吧。

在PHP开发的过程中经常需要发送POST请求,POST相比GET要安全很多,而且传输的数据量也较大。下面PHP程序员雷雪松就带大家一起总结下PHP发送POST请求的几种常用方式,分别使用curl、file_get_content来实现POST请求和传递参数。

1、curl实现PHP POST请求和传递参数。


$data=array("username"=>"raykaeso","name"=>"雷雪松");//post参数
$url="http://www.111cn.net";
$ch = curl_init();//创建连接
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));//将数组转换为URL请求字符串,否则有些时候可能服务端接收不到参数
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); //接收服务端范围的html代码而不是直接浏览器输出
curl_setopt($ch, CURLOPT_HEADER, false);
$responds = curl_exec($ch);//接受响应
curl_close($ch);//关闭连接

2、file_get_content实现PHP POST请求和传递参数


$data=array("username"=>"raykaeso","name"=>"雷雪松");//post参数
$url="http://www.111cn.net";
$content = http_build_query($data);
$length = strlen($content);
$options = array(
'http' => array(
'method' => 'POST',
'header' =>
"Content-type: application/x-www-form-urlencoded\r\n" .
"Content-length: $length \r\n",
'content' => $content
)
);
file_get_contents($url, false, stream_context_create($options));

[!--infotagslink--]

相关文章

  • php中网页添加到桌面快捷方式方法

    我们经常会在网站中看到可以直接把网站以快捷方式保存到自己的电脑中,然后只要点击就可以实现进入网了,那么php中怎么把网页添加到桌面快捷方式呢。 功能简单,直接上...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • python 计算方位角实例(根据两点的坐标计算)

    今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • PHP用DOM方式处理HTML之《Simple HTML DOM》

    近经常需要采集一些网上的数据,发现一个PHP处理HTML的利器 simple html dom,看了一下文档,使用非常方便,关键是能够用CSS选择器来访问DOM树,和jquery相似,实在是难得的利器...2016-11-25
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • ps中怎么设置垂直罗马对齐方式?垂直罗马对齐方式设置方法

    photoshop的直排文字工具,打出的字特别是英文字母,默认排列侧向的,如何调整为正向排列呢?下面我们就来看看标准的罗马对齐方式应该怎么设置。 1、在PS中点击“工具面...2017-01-22
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • JS实现购物车中商品总价计算

    这篇文章主要为大家详细介绍了JS实现购物车中商品总价的计算 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-07
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • 谈谈PHP中相对路径的问题与绝对路径的使用

    经常看到有人踩在了PHP路径的坑上面了,感觉有必要来说说PHP中相对路径的一些坑,以及PHP中绝对路径的使用,下面一起来看看。 ...2016-08-24
  • php构造方法中析构方法在继承中的表现

    这篇文章主要为大家详细介绍了php构造方法中析构方法在继承中的表现,感兴趣的小伙伴们可以参考一下...2016-04-15
  • thinkPHP中多维数组的遍历方法

    这篇文章主要介绍了thinkPHP中多维数组的遍历方法,以简单实例形式分析了thinkPHP中foreach语句的使用技巧,需要的朋友可以参考下...2016-01-12