本帖最后由 yangtingKL 于 2011-01-06 15:23:09 编辑

解决方案 »

  1.   

    这个我感觉很难  要考虑到算法!
    以前做过这类东西 假如数组一和数组二比较大的话;2者做比较页面出现超时,大量消耗CPU!(是不是我想到太复杂了?)
    如果量少的话,遍历一下数组,然后比较,填充!几个步骤搞定!
      

  2.   


    $x[0]["ADV_SITE"] = "http://hao.360.cn";
    $x[0]["COUNT_NUM"] = "1224";
    $x[1]["ADV_SITE"] = "http://news.baidu.com";
    $x[1]["COUNT_NUM"] = "24";
    $x[2]["ADV_SITE"] = "http://www.test.com";
    $x[2]["COUNT_NUM"] = "9";
    $x[3]["ADV_SITE"] = "http://www.sys.net";
    $x[3]["COUNT_NUM"] = "100";
    $y[0]["ADV_SITE"] = "http://www.baidu.com";
    $y[0]["COUNT_NUM"] = "6168";$y[1]["ADV_SITE"] = "http://www.test.com";
    $y[1]["COUNT_NUM"] = "1923";$y[2]["ADV_SITE"] = "http://www.google.com";
    $y[2]["COUNT_NUM"] = "137";
    $key1= array();
    $key2= array();foreach($x as $num1){
        $key1[$num1["ADV_SITE"]] = $num1["COUNT_NUM"];
        $keyname1[] = $num1["ADV_SITE"];
    }foreach($y as $num2){
        $key2[$num2["ADV_SITE"]] = $num2["COUNT_NUM"];
        $keyname2[] = $num2["ADV_SITE"];
    }
    $new1 = array_flip($keyname1);
    $new2 = array_flip($keyname2);$rst = array_merge($new1,$new2);$back = array();
    foreach($rst as $rkey=>$rval){
        $vaule1 = empty($key1[$rkey])? "0" : $key1[$rkey];
        $vaule2 = empty($key2[$rkey])? "0" : $key2[$rkey];
        $back[] = array($rkey,$vaule1,$vaule2);
    }print_r($back);//输出
    Array
    (
        [0] => Array
            (
                [0] => http://hao.360.cn
                [1] => 1224
                [2] => 0
            )    [1] => Array
            (
                [0] => http://news.baidu.com
                [1] => 24
                [2] => 0
            )    [2] => Array
            (
                [0] => http://www.test.com
                [1] => 9
                [2] => 1923
            )    [3] => Array
            (
                [0] => http://www.sys.net
                [1] => 100
                [2] => 0
            )    [4] => Array
            (
                [0] => http://www.baidu.com
                [1] => 0
                [2] => 6168
            )    [5] => Array
            (
                [0] => http://www.google.com
                [1] => 0
                [2] => 137
            ))
    ------------------测试哥的签名--------------------------
    哥默默的低下头,不是哥修养好,而是哥在找砖头!
    --------------------------------------------------------
      

  3.   

    这个我感觉很难  要考虑到算法!
    以前做过这类东西 假如数组一和数组二比较大的话;2者做比较页面出现超时,大量消耗CPU!(是不是我想到太复杂了?)
    如果量少的话,遍历一下数组,然后比较,填充!几个步骤搞定!
      

  4.   

    接3楼的部分$arr1=
    Array
    (
      0 => Array("ADV_SITE" => "http://hao.360.cn","COUNT_NUM" => "1224"),
      1 => Array("ADV_SITE" => "http://news.baidu.com","COUNT_NUM" => "24"),
      2 => Array("ADV_SITE" => "http://www.test.com","COUNT_NUM" => "9"),
      3 => Array("ADV_SITE" => "http://www.sys.net","COUNT_NUM" => "100")
    ) ; 
    $arr2=Array
    (
      0 => Array("ADV_SITE" => "http://www.baidu.com", "COUNT_NUM" => "6168"),
      1 => Array("ADV_SITE" => "http://www.test.com","COUNT_NUM" => "1923"),
      2 => Array("ADV_SITE" => "http://www.google.com","COUNT_NUM" => "137")
    );
    echo "<pre/>";$i=0;$num1=0;
    $num1=count($arr1)>count($arr2)?count($arr1):count($arr2);
    while($i<$num1)
    {
    if($arr1[$i]['ADV_SITE'])
    {
    $n[$arr1[$i]['ADV_SITE']]=$arr1[$i]['COUNT_NUM'];
    }
    if($arr2[$i]['ADV_SITE'])
    {
    $n1[$arr2[$i]['ADV_SITE']]=$arr2[$i]['COUNT_NUM'];
    }
    $i++;
    }$rst = array_merge($n,$n1);
    foreach($rst as $rkey=>$rval){
        $vaule1 = empty($n[$rkey])? "0" : $n[$rkey];
        $vaule2 = empty($n1[$rkey])? "0" : $n1[$rkey];
    echo $rkey."      ".$vaule1."      ".$vaule2."<br/>";
    }
      

  5.   

    对了、这样子合并会存在问题。如果一个数组里面一个ADV_SITE 也没有。那另一个数组里面也不会显示任何的东西了。