您好,欢迎访问一九零五行业门户网

请问php二维数组 查找相同的值合并 如何写?

这个是数组 
主要功能就是thinkphp视图模型里查询的结果  我想
查询每个数组里的相同的标题值 然后进行合并                合并数组 貌似用array_merge()
我怎么查找相同的标题呢  foreach 遍历 返回数组里的索引值 可以么       貌似 key() 函数有这个功能 求好心人具体写个
相同的标题 数组元素的位置 这样返回 合并的时候就直接 这样的形式用 可以么
array_merge(array[0],array[1])
相同的标题 然后合并的是图片的连接字段这样 pictureurl就是这个不一样
简单说就是多图上传 发文章这样的  文章找找以后要是有几千篇 那数组就是好几倍的量  高效的计算 能用的 求大神指点啊~ 
这样
array(2) { [0] => array(5) { [pictitle] => string(33) 标题1 [piccategroy] => string(6) 分类 [picauthor] => string(12) 作者 [picposttime] => string(19) 2014-11-20 16:05:16 [pictureurl] => string(55) attachment/picture/uploadify/20141120/546da0784831c.png } [1] => array(5) { [pictitle] => string(33) 标题1 [piccategroy] => string(6) 分类 [picauthor] => string(12) 作者 [picposttime] => string(19) 2014-11-20 16:05:16 [pictureurl] => string(55) attachment/picture/uploadify/20141120/546da0746edb8.png }}
回复讨论(解决方案) 那你最终要达成什么样的结果呢?
目的不同,算法也不同
那你最终要达成什么样的结果呢?
目的不同,算法也不同
array(2) { [0] => array(5) { [pictitle] => string(33) 标题1 [piccategroy] => string(6) 分类 [picauthor] => string(12) 作者 [picposttime] => string(19) 2014-11-20 16:05:16 [pictureurl] => string(55) attachment/picture/uploadify/20141120/546da0784831c.png,attachment/picture/uploadify/20141120/546da0746edb8.png }}
就是这样的 相同的标题 不同的就是pictureurl
合并就行了 求版主指点~
$ar = array( array( pictitle => 标题1, piccategroy => 分类, picauthor => 作者, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0784831c.png, ), array( pictitle => 标题1, piccategroy => 分类, picauthor => 作者, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0746edb8.png, ),);foreach(call_user_func_array('array_merge_recursive', $ar) as $key=>$item) { $res[$key] = join(',', array_unique($item));}var_export($res);

array ( 'pictitle' => '标题1', 'piccategroy' => '分类', 'picauthor' => '作者', 'picposttime' => '2014-11-20 16:05:16', 'pictureurl' => 'attachment/picture/uploadify/20141120/546da0784831c.png,attachment/picture/uploadify/20141120/546da0746edb8.png',)

$ar = array( array( pictitle => 标题1, piccategroy => 分类, picauthor => 作者, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0784831c.png, ), array( pictitle => 标题1, piccategroy => 分类, picauthor => 作者, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0746edb8.png, ),);foreach(call_user_func_array('array_merge_recursive', $ar) as $key=>$item) { $res[$key] = join(',', array_unique($item));}var_export($res);

array ( 'pictitle' => '标题1', 'piccategroy' => '分类', 'picauthor' => '作者', 'picposttime' => '2014-11-20 16:05:16', 'pictureurl' => 'attachment/picture/uploadify/20141120/546da0784831c.png,attachment/picture/uploadify/20141120/546da0746edb8.png',)

版主大人 还得麻烦您看眼 这个是在相同的标题下才合并的 貌似有点复杂
array(6) { [0] => array(5) { [pictitle] => string(7) 标题2 [piccategroy] => string(6) 海报 [picauthor] => string(12) 星耀学园 [picposttime] => string(19) 2014-11-26 11:59:50 [pictureurl] => string(55) attachment/picture/uploadify/20141126/547550278b7db.jpg } [1] => array(5) { [pictitle] => string(7) 标题2 [piccategroy] => string(6) 海报 [picauthor] => string(12) 星耀学园 [picposttime] => string(19) 2014-11-26 11:59:50 [pictureurl] => string(55) attachment/picture/uploadify/20141126/54755027ab89b.jpg } [2] => array(5) { [pictitle] => string(7) 标题2 [piccategroy] => string(6) 海报 [picauthor] => string(12) 星耀学园 [picposttime] => string(19) 2014-11-26 11:59:50 [pictureurl] => string(55) attachment/picture/uploadify/20141126/547550273b753.jpg } [3] => array(5) { [pictitle] => string(7) 标题2 [piccategroy] => string(6) 海报 [picauthor] => string(12) 星耀学园 [picposttime] => string(19) 2014-11-26 11:59:50 [pictureurl] => string(55) attachment/picture/uploadify/20141126/54755027d8488.jpg } [4] => array(5) { [pictitle] => string(33) 同步写入信息和附件表里 [piccategroy] => string(6) 海报 [picauthor] => string(12) 星耀学园 [picposttime] => string(19) 2014-11-20 16:05:16 [pictureurl] => string(55) attachment/picture/uploadify/20141120/546da0746edb8.png } [5] => array(5) { [pictitle] => string(33) 同步写入信息和附件表里 [piccategroy] => string(6) 海报 [picauthor] => string(12) 星耀学园 [picposttime] => string(19) 2014-11-20 16:05:16 [pictureurl] => string(55) attachment/picture/uploadify/20141120/546da0784831c.png }}
用您这个处理完 都合并在一起了 我想是不同的标题的是不一样的 标题1 相同标题的都合并在一起 一个数组 标题2相同的合并在一起一个数组 就是图片链接pictureurl 这个进行合并 求大大指点 如何判断很多个标题里 判断标题是重复的呢 这个肯定是一个标题有多个重复的数组, 主要是区分去多个不同标题。
array ( 'pictitle' => '标题2,同步写入信息和附件表里', 'piccategroy' => '海报', 'picauthor' => '星耀学园', 'picposttime' => '2014-11-26 11:59:50,2014-11-20 16:05:16', 'pictureurl' => 'attachment/picture/uploadify/20141126/547550278b7db.jpg,attachment/picture/uploadify/20141126/54755027ab89b.jpg,attachment/picture/uploadify/20141126/547550273b753.jpg,attachment/picture/uploadify/20141126/54755027d8488.jpg,attachment/picture/uploadify/20141120/546da0746edb8.png,attachment/picture/uploadify/20141120/546da0784831c.png', )
$ar = array( array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/547550278b7db.jpg, ), array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/54755027ab89b.jpg, ), array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/547550273b753.jpg, ), array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/54755027d8488.jpg, ), array( pictitle => 同步写入信息和附件表里, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0746edb8.png, ), array( pictitle => 同步写入信息和附件表里, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0784831c.png, ),);$res = array();foreach($ar as $item) { if(! isset($res[$item['pictitle']])) $res[$item['pictitle']] = $item; else $res[$item['pictitle']]['pictureurl'] .= ',' . $item['pictureurl'];}var_export(array_values($res));

array ( 0 => array ( 'pictitle' => '标题2', 'piccategroy' => '海报', 'picauthor' => '星耀学园', 'picposttime' => '2014-11-26 11:59:50', 'pictureurl' => 'attachment/picture/uploadify/20141126/547550278b7db.jpg,attachment/picture/uploadify/20141126/54755027ab89b.jpg,attachment/picture/uploadify/20141126/547550273b753.jpg,attachment/picture/uploadify/20141126/54755027d8488.jpg', ), 1 => array ( 'pictitle' => '同步写入信息和附件表里', 'piccategroy' => '海报', 'picauthor' => '星耀学园', 'picposttime' => '2014-11-20 16:05:16', 'pictureurl' => 'attachment/picture/uploadify/20141120/546da0746edb8.png,attachment/picture/uploadify/20141120/546da0784831c.png', ),)

随便写了下,没测试过,大楷是这么个思路
$ar = array(
array(
pictitle => 标题1,
piccategroy => 分类,
picauthor => 作者,
picposttime => 2014-11-20 16:05:16,
pictureurl => attachment/picture/uploadify/20141120/546da0784831c.png,
),
array(
pictitle => 标题1,
piccategroy => 分类,
picauthor => 作者,
picposttime => 2014-11-20 16:05:16,
pictureurl => attachment/picture/uploadify/20141120/546da0746edb8.png,
),
);
//标题=>数组索引数组
$map_arr=array();
foreach($ar as $key=>$item)
{
//判断是否在标题=>数组索引数组中
if(isset($map_arr[$item['pictitle']]))
{
//在的话合并
$ar[$key]=array_merge($ar[$key],$map_arr[$item['pictitle']]);
}
else
{
//不在的话存入映射索引
$map_arr[$item['pictitle']]=$item;
unset($ar[$key]); //删除原来在数组存在的值
}
}
补充下 unset($ar[$key]); //删除原来在数组存在的值
这句移动到这个下面,疏忽写错了
//在的话合并
$ar[$key]=array_merge($ar[$key],$map_arr[$item['pictitle']]);
$arr = array( array( pictitle => 标题1, piccategroy => 分类, picauthor => 作者, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0784831c.png, ), array( pictitle => 标题1, piccategroy => 分类, picauthor => 作者, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0746edb8.png, ));$item=array();foreach($arr as $key=>$value){ foreach($value as $k=>$v){ if(!isset($item[$k])){ $item[$k]=$v; } }}print_r($item);
$ar = array( array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/547550278b7db.jpg, ), array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/54755027ab89b.jpg, ), array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/547550273b753.jpg, ), array( pictitle => 标题2, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-26 11:59:50, pictureurl => attachment/picture/uploadify/20141126/54755027d8488.jpg, ), array( pictitle => 同步写入信息和附件表里, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0746edb8.png, ), array( pictitle => 同步写入信息和附件表里, piccategroy => 海报, picauthor => 星耀学园, picposttime => 2014-11-20 16:05:16, pictureurl => attachment/picture/uploadify/20141120/546da0784831c.png, ),);$res = array();foreach($ar as $item) { if(! isset($res[$item['pictitle']])) $res[$item['pictitle']] = $item; else $res[$item['pictitle']]['pictureurl'] .= ',' . $item['pictureurl'];}var_export(array_values($res));

array ( 0 => array ( 'pictitle' => '标题2', 'piccategroy' => '海报', 'picauthor' => '星耀学园', 'picposttime' => '2014-11-26 11:59:50', 'pictureurl' => 'attachment/picture/uploadify/20141126/547550278b7db.jpg,attachment/picture/uploadify/20141126/54755027ab89b.jpg,attachment/picture/uploadify/20141126/547550273b753.jpg,attachment/picture/uploadify/20141126/54755027d8488.jpg', ), 1 => array ( 'pictitle' => '同步写入信息和附件表里', 'piccategroy' => '海报', 'picauthor' => '星耀学园', 'picposttime' => '2014-11-20 16:05:16', 'pictureurl' => 'attachment/picture/uploadify/20141120/546da0746edb8.png,attachment/picture/uploadify/20141120/546da0784831c.png', ),)

谢谢版主大人 解决了 只不过最后的这个var_export函数去掉 就是我要的结果了~
其它类似信息

推荐信息