合并多维数组中的行

时间:2013-09-14 20:09:23

标签: php arrays

我有一个简单的多维数组:

$carousels = array(
    array(cols=>4, visible=>"visible-lg"), 
    array(cols=>4, visible=>"visible-md"), 
    array(cols=>3, visible=>"visible-sm"), 
    array(cols=>3, visible=>"visible-xs")
    );

如何组合'cols'相同的任何行?

我想最终得到以下结论:

$carousels = array(
    array(cols=>4, visible=>"visible-lg visible-md"), 
    array(cols=>3, visible=>"visible-sm visible-xs")
    );

因此'可见'键被合并,'cols'键保持不变。我想我需要遍历数组并输出到另一个'merged'数组但是有更好的方法吗?

这是我到目前为止所拥有的

function searchForKey($key, $arr) {
   foreach ($arr as $k => $v) {
       if ($v['cols'] === $key) {
           return $k;
       }
   }
   return null;
}
function mergeRows( $arr ) {
    $result = array();
    foreach( $arr as $k => $v ) {
        $key = searchForKey($v['cols'], $result);
        if ($key !== null) {
            $result[$key]['visible'] .= " ".$v['visible'];
        } else {
            $result[] = $v;
        }
    }
    return $result;
}

1 个答案:

答案 0 :(得分:0)

我认为你需要一个循环。循环数组,检查是否存在“cols”,如果存在,则连接“visible”字符串,如果不存在,则添加新条目。之后,您将获得所需的阵列。

array_merge在这里不起作用,因为它只会合并2个或更多数组。