本帖最后由 lumengabc 于 2014-01-19 20:13:57 编辑

解决方案 »

  1.   

    $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
            ))
      

  2.   


    <?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只研究代码不研究其他