1

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

$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”键保持不变。我想我需要遍历数组并输出到另一个“合并”数组,但有更好的方法吗?

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

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;
}
4

1 回答 1

0

我想你需要一个循环。循环数组,检查“cols”是否存在,如果存在,连接“可见”字符串,如果不存在,添加一个新条目。之后,您将拥有所需的阵列。

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

于 2013-09-14T20:24:50.397 回答