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

星耀学园 2014-11-26 10:43:13
这个是数组
主要功能就是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"
}
}
...全文
1653 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
大佬这个数组的键用了中文 不会出现编码错乱吗?
星耀学园 2014-11-27
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
$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函数去掉 就是我要的结果了~
星耀学园 2014-11-26
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
$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', )
xuzuning 2014-11-26
  • 打赏
  • 举报
回复
$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',
)
星耀学园 2014-11-26
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
那你最终要达成什么样的结果呢? 目的不同,算法也不同
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 合并就行了 求版主指点~
xuzuning 2014-11-26
  • 打赏
  • 举报
回复
那你最终要达成什么样的结果呢? 目的不同,算法也不同
天涯过客009 2014-11-26
  • 打赏
  • 举报
回复

$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);
真中传人 2014-11-26
  • 打赏
  • 举报
回复
补充下 unset($ar[$key]); //删除原来在数组存在的值 这句移动到这个下面,疏忽写错了 //在的话合并 $ar[$key]=array_merge($ar[$key],$map_arr[$item['picTitle']]);
真中传人 2014-11-26
  • 打赏
  • 举报
回复
随便写了下,没测试过,大楷是这么个思路 $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]); //删除原来在数组存在的值 } }
xuzuning 2014-11-26
  • 打赏
  • 举报
回复
$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',
  ),
)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧