请教数组合并问题 本帖最后由 lumengabc 于 2014-01-19 20:13:57 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $a = array('sh'=>500,'bj'=>100, 'jx'=>20);$b = array('bj'=>5, 'cq'=>50, 'sh'=>0);$keys = array_keys(array_merge($a,$b));foreach($keys as $k){ $ar[$k]=array($a[$k] ? $a[$k] : 0 , $b[$k] ? $b[$k] : 0);}print_r($ar);Array( [sh] => Array ( [0] => 500 [1] => 0 ) [bj] => Array ( [0] => 100 [1] => 5 ) [jx] => Array ( [0] => 20 [1] => 0 ) [cq] => Array ( [0] => 0 [1] => 50 )) <?php$a = array('sh' => 500, 'bj' => 100, 'jx' => 20);$b = array('bj' => 5, 'cq' => 50, 'sh' => 0);var_dump(array_merge_recursive($a+array_fill_keys(array_keys(array_merge($a, $b)), '0'), $b));高性能时版主会代码会出现BUG我不知道你的数据量有多大可以分别运行测试我本地是php5.5.6所有版主代码稍微改动了下否则程序跑不起来(关闭错误输出也不行php版本问题)<?php$pagestartime = microtime();$b = $a = range(0, 100000);array_merge_recursive($a + array_fill_keys(array_keys(array_merge($a, $b)), '0'), $b);$pageendtime = microtime();$starttime = explode(" ", $pagestartime);$endtime = explode(" ", $pageendtime);$totaltime = $endtime[0] - $starttime[0] + $endtime[1] - $starttime[1];$timecost = sprintf("%s", $totaltime);var_dump($timecost);$pagestartime = microtime();$b = $a = range(0, 100000);$keys = array_keys(array_merge($a, $b));$ar=array();foreach ($keys as $k) { $ar[$k] = array(isset($a[$k]) ? $a[$k] : 0, isset($a[$k]) ? $b[$k] : 0);}$pageendtime = microtime();$starttime = explode(" ", $pagestartime);$endtime = explode(" ", $pageendtime);$totaltime = $endtime[0] - $starttime[0] + $endtime[1] - $starttime[1];$timecost = sprintf("%s", $totaltime);var_dump($timecost);1w条数据时版主代码我的代码10w条数据时版主代码我的代码100w数据库时都会出现Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)错误memory_limit可解决此问题我本地memory_limit = 128M版主代码 9.4w 我的代码 22w只研究代码不研究其他 求php数据库不能导出 当MYSQL表类型为myisan时,如何保下数据的有效性? 跪求提问php取值问题! php 环境配置有关系?? session 的问题 敢问这条语句怎么写,关于字符串连接的 学习php! 写了段代码,不知道该如何理解面向对象的继承 可以通过odbc调用mssql带参数的存储过程吗? ◆◇连接远程数据库问题,web服务器,数据库服务器不是同一台电脑!! 谁知道哪里有这样的论坛下载?100分相送,内详 like ‘%” $search "%';‘%” 什么意思? sql怎样获取某个值在表中某个字段的排名?
$b = array('bj'=>5, 'cq'=>50, 'sh'=>0);
$keys = array_keys(array_merge($a,$b));foreach($keys as $k){
$ar[$k]=array($a[$k] ? $a[$k] : 0 , $b[$k] ? $b[$k] : 0);
}
print_r($ar);
Array
(
[sh] => Array
(
[0] => 500
[1] => 0
) [bj] => Array
(
[0] => 100
[1] => 5
) [jx] => Array
(
[0] => 20
[1] => 0
) [cq] => Array
(
[0] => 0
[1] => 50
))
<?php$a = array('sh' => 500, 'bj' => 100, 'jx' => 20);
$b = array('bj' => 5, 'cq' => 50, 'sh' => 0);
var_dump(array_merge_recursive($a+array_fill_keys(array_keys(array_merge($a, $b)), '0'), $b));
高性能时版主会代码会出现BUG我不知道你的数据量有多大
可以分别运行测试我本地是php5.5.6所有版主代码稍微改动了下否则程序跑不起来(关闭错误输出也不行php版本问题)<?php$pagestartime = microtime();
$b = $a = range(0, 100000);
array_merge_recursive($a + array_fill_keys(array_keys(array_merge($a, $b)), '0'), $b);
$pageendtime = microtime();
$starttime = explode(" ", $pagestartime);
$endtime = explode(" ", $pageendtime);
$totaltime = $endtime[0] - $starttime[0] + $endtime[1] - $starttime[1];
$timecost = sprintf("%s", $totaltime);
var_dump($timecost);
$pagestartime = microtime();
$b = $a = range(0, 100000);
$keys = array_keys(array_merge($a, $b));
$ar=array();
foreach ($keys as $k) {
$ar[$k] = array(isset($a[$k]) ? $a[$k] : 0, isset($a[$k]) ? $b[$k] : 0);
}
$pageendtime = microtime();
$starttime = explode(" ", $pagestartime);
$endtime = explode(" ", $pageendtime);
$totaltime = $endtime[0] - $starttime[0] + $endtime[1] - $starttime[1];
$timecost = sprintf("%s", $totaltime);
var_dump($timecost);
1w条数据时
版主代码
我的代码10w条数据时
版主代码
我的代码
100w数据库时
都会出现
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes)错误
memory_limit可解决此问题我本地memory_limit = 128M版主代码 9.4w
我的代码 22w只研究代码不研究其他