
正文
php数据处理怎么解决 php处理大量数据
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
php数组处理问题
直接给你上代码和效果了。
建议1:合计最后一行可以让前端处理。
建议2:下次在发问题的时候,把所有场景的数组已文本的形式贴在问题里,不然在给你解决问题的过程中数据部分都得照着你的图片打出来(坑~)
效果图:
php代码:
?php
$array = array(
array(
'create_time' = '2018-02-14 15:36:32',
'receivable_balance' = '200.00',
'name' = '李四',
'business_id' = 2
),
array(
'create_time' = '2018-02-21 15:36:31',
'receivable_balance' = '200.00',
'name' = '李四',
'business_id' = 2
),
array(
'create_time' = '2018-02-21 15:30:13',
'receivable_balance' = '-1000.00',
'name' = '王五',
'business_id' = 3
),
array(
'create_time' = '2018-02-27 15:30:13',
'receivable_balance' = '-1000.00',
'name' = '王五',
'business_id' = 3
),
array(
'create_time' = '2018-02-27 15:30:14',
'receivable_balance' = '-2000.00',
'name' = '王五',
'business_id' = 3
),
array(
'create_time' = '2018-02-28 15:30:14',
'receivable_balance' = '2000.00',
'name' = '王五',
'business_id' = 3
)
);
// 把所有的日期拿出来组合 table 标题
$dates = [];
foreach ($array as $key = $val) {
$date = date('Y-m-d', strtotime($val['create_time']));
if (!in_array($date, $dates)) {
array_push($dates, $date);
};
}
// 日期正序
sort($dates);
/**
* 组合新数组
*/
$listsArray = [];
$sumArray = [];
foreach ($array as $key = $val) {
$date = date('Y-m-d', strtotime($val['create_time']));
// 列表
if (isset($listsArray[$val['name']][$date])) {
// 如果某人一天多次进行累加
$listsArray[$val['name']][$date]['receivable_balance'] = bcadd($listsArray[$val['name']][$date]['receivable_balance'], $val['receivable_balance'], 2);
} else {
$listsArray[$val['name']][$date] = $val;
}
// 合计
if (!isset($sumArray[$date]['sum'])) { // 如果当天日期没有的设置为 0
$sumArray[$date]['sum'] = 0.00;
}
$sumArray[$date]['sum'] = bcadd($sumArray[$date]['sum'], $val['receivable_balance'], 2);
}
$table = "table border='1'";
// 标题行开始
$table .= "tr";
$table .= "td序号/tdtd业务员/td";
foreach ($dates as $date) {
$table .= "td" . $date . "/td";
}
$table .= "/tr";
// 标题行结束
// 列表数据开始
$i = 1;
foreach ($listsArray as $name = $val) {
$table .= "tr";
$table .= "td" . $i . "/tdtd" . $name . "/td";
foreach ($dates as $date) {
if (isset($val[$date])) {
$table .= "td" . $val[$date]['receivable_balance'] . "/td";
} else {
$table .= "td" . "--" . "/td";
}
}
$table .= "/tr";
$i++;
}
// // 列表数据结束
// 合计数据开始
$table .= "tr";
$table .= "tdnbsp;/tdtd合计:/td";
foreach ($dates as $date) {
$table .= "td" . $sumArray[$date]['sum'] . "/td";
}
$table .= "/tr";
// 合计数据结束
$table .= "/table";
echo $table;
相关问答
Q1: php处理大量数据时,运行到一定时间就中断了,请问如何解决
你是cli模式还是cgi模式?cli模式不用设默认就是无时间限制,cgi默认是有30秒超时限制。
你可以先看看每次中断是固定时长,还是固定次数;也可以多打日志,每次循环都输出些参考参数如循环条件、内存使用等信息,再分析哪些可能导致程序中断的原因。
Q2: 在PHP中怎么解决大量数据处理的问题?许昌鲤鱼IT计算机电脑软件编程培训中心
目前主流的编程软件VisualBasic的版本是VisualBasic 6.0专业版。我们所使用的操作系统是Windows10。
先把VisualBasic 6.0的安装光盘放入电脑的光盘驱动器中,通常电脑能够自动运行光盘上的安装程序。在安装VisualBasic之前,最好先详细地阅读一下光盘上的Readme.txt文件,了解安装VisualBasic 6.0需要的一些基本知识,然后单击光盘上的Setup.exe文件,并按照安装程序的提示进行操作。
首先,安装程序会显示一个启动画面。如果使用的是不同的安装盘,也许Readme文件的格式可能有所不同,但是不影响应用程序的安装。
在上面的对话框中可以直接单击对话框上的【下一步】按钮,进入下面的操作。这时会进入一个显示微软的最终用户许可协议书的窗口,里面的内容规定了最终用户的一些必要的义务。在这里只能选择同意,因为如果选择不同意,安装程序就退出了。
在下面的窗口中,将要求用户输入用户名和所属的公司名称,并输入产品的ID号。这个ID号应该包含在购买的光盘中。输入相应的信息之后,单击【下一步】按钮。如果输入的ID号正确,那么将进入VisualBasic 6.0安装程序的下一个窗口,在这里有两个选项,对话框中对这两个选项进行了必要的解释。在这里选择第一个选项,也是安装程序的默认选项。
单击【下一步】按钮,进入安装程序的下一个对话框。在这个对话框中,安装程序要求选择VisualBasic 6.0应用程序的公共文件的安装路径。在这里可以根据自己的需要把应用程序安装到希望的路径中。在完成了路径的选择之后,单击【下一步】按钮,进入安装程序的下一步操作。ß这时完成了安装程序的初始配置,现在进入了真正和VisualBasic 6.0相关的安装程序,在经过一段初始化操作之后,安装程序将显示选择安装类型的对话框。
在这个对话框中,要进行两个操作,一个是选择VisualBasic 6.0系统的安装路径,第二个是选择程序的安装类型。这里同样可以任意指定程序的安装位置,比如指定到“E:/VB”。在选择安装类型的时候,有两个选择:典型安装,是安装程序根据最常用的选项安装,第二项是允许根据需要来配置安装选项。
单击【自定义安装】按钮,会显示设置安装选项的对话框。
在左边的列表框中选中或者清除复选框,就表示要或者不要安装相应的组件。单击对话框右边的【更改选项】按钮,可以进行更为细致的设置。
选择好了需要的选项之后,单击【继续】按钮,可以开始复制VisualBasic 6.0的文件,当程序复制完所有的文件,并进行相应的系统配置之后,就会要求重新启动Windows,按照要求重新启动系统之后,VisualBasic 6.0的安装工作就基本完成了。
在重新启动电脑之后,系统会询问是否安装MSDN,这是VisualBasic 6.0的帮助系统,可以根据自己的需要安装这个系统。
希望我能帮助你解疑释惑。
Q3: PHP-大数据量怎么处理优化
大数据的话可以进行以下操作:
减少对数据库的读取,也就是减少调用数据库,
进行数据缓存,
利用数据库的自身优化技术,如索引等
精确查询条件,有利于提高查找速度
Q4: php弄数据库一般怎么处理CREATE语句的?
1:可以在自己在文本里面写好相关的建表语句php数据处理怎么解决,然后用phpmyadmin之类的工具导入到你的数据库php数据处理怎么解决,然后在通过程序连接数据库,插入,修改,删除,查询。一般开发流程都是在程序开发之前就需要规划数据表的结构的。(个人和企业自身用这样就可以php数据处理怎么解决了)
2:就像你说的那样创建一个文件专门用来创建数据库和表,也就是程序的安装模块,当然也是需要在文本中写相关的sql语句的,之后通过程序导入到数据库去,创建好了之后可以把他删除。(这种一般给别人开发的时候用,像那些开源的cms都是这样的)
Q5: 在PHP中怎么解决大量数据处理的问题
mysql_query函数查询的方式是查询出全部结果后缓存到内存中,这样就会出现超内存的现象,使用另外一个函数mysql_unbuffered_query可以解决这个问题,mysql_unbuffered_query不会缓存结果集,而是查询出来数据后立马对结果集进行操作,也就是便查询边返回,这样就不会出现超出内存的现象,但是使用mysql_unbuffered_query的是时候不能使用 mysql_num_rows() 和 mysql_data_seek()。并且向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。例如:
使用缓存结果集的代码:
function selecttest()
{
try {
$pdo = new PDO("mysql:host=localhost;dbname=test", 'root', '123456');
// 不使用缓存结果集方式
// $pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
$sth = $pdo-prepare('select * from test');
$sth-execute();
echo '最初占用内存大小:' . memory_get_usage() . "\n";
$i = 0;
while ($result = $sth-fetch(PDO::FETCH_ASSOC)) {
$i += 1;
if ($i 10) {
break;
}
sleep(1);
print_r($result);
echo '占用内存大小:' . memory_get_usage() . "\n";
}
} catch (Exception $e) {
echo $e-getMessage();
}
}
执行时将会报超出内存的错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 204800000 bytes) in E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php on line 56
Call Stack:
0.0005 135392 1. {main}() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:0
0.0005 135568 2. test-selecttest() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:85
0.0050 142528 3. PDOStatement-execute() E:\ProgramDevelopment\RuntimeEnvironment\xampp\htdocs\test\test.php:56
将上面代码中的$pdo-setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);一行的注释去掉后将不在缓存结果集,这时运行该函数的结果如下:
最初占用内存大小:144808
Array
(
[id] = 1
[a] = v
[b] = w
[c] = i
)
占用内存大小:145544
Array
(
[id] = 2
[a] = b
[b] = l
[c] = q
)
占用内存大小:145544
Array
(
[id] = 3
[a] = m
[b] = p
[c] = h
)
占用内存大小:145536
Array
(
[id] = 4
[a] = j
[b] = i
[c] = b
)
占用内存大小:145536
可以看到,这时返回一条数据内存占用非常的小,也就700多字节,这样就不会出现超出内存的错误了。
php数据处理怎么解决的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于php处理大量数据、php数据处理怎么解决的信息别忘了在本站进行查找喔。







