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")
    );

そのため、'visible' キーはマージされ、'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