php合并数组问题(请教高手阿) 本帖最后由 yangtingKL 于 2011-01-06 15:23:09 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个我感觉很难 要考虑到算法!以前做过这类东西 假如数组一和数组二比较大的话;2者做比较页面出现超时,大量消耗CPU!(是不是我想到太复杂了?)如果量少的话,遍历一下数组,然后比较,填充!几个步骤搞定! $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 ))------------------测试哥的签名--------------------------哥默默的低下头,不是哥修养好,而是哥在找砖头!-------------------------------------------------------- 这个我感觉很难 要考虑到算法!以前做过这类东西 假如数组一和数组二比较大的话;2者做比较页面出现超时,大量消耗CPU!(是不是我想到太复杂了?)如果量少的话,遍历一下数组,然后比较,填充!几个步骤搞定! 接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/>";} 对了、这样子合并会存在问题。如果一个数组里面一个ADV_SITE 也没有。那另一个数组里面也不会显示任何的东西了。 新手安装wamp5求救 页面加载顺序的问题~ 让这个js优先执行 怎么写呢? php中file函数的问题 php 如下数据库连接 错误: 在innodb类型表上执行count(*)查询的问题 发送邮件的问题 百度ueditor在本地测试一切正常,但是上传到服务器后上传图片时出现了问题? [求助]谁有PHP-Nuke 7.5.0的安装教程? 如何去掉硬回车 关于一个发信的问题 Linux下用什么编辑器? PHP中怎么打开CHM格式的文件....
以前做过这类东西 假如数组一和数组二比较大的话;2者做比较页面出现超时,大量消耗CPU!(是不是我想到太复杂了?)
如果量少的话,遍历一下数组,然后比较,填充!几个步骤搞定!
$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
))
------------------测试哥的签名--------------------------
哥默默的低下头,不是哥修养好,而是哥在找砖头!
--------------------------------------------------------
以前做过这类东西 假如数组一和数组二比较大的话;2者做比较页面出现超时,大量消耗CPU!(是不是我想到太复杂了?)
如果量少的话,遍历一下数组,然后比较,填充!几个步骤搞定!
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/>";
}