2013-09-14 4 views
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; 
} 
+0

Что вы попробовали? – Itay

+0

@Itay см. Дополнение к моему вопросу – gpcola

ответ

0

Я думаю, вам нужно будет цикл. Переверните массив, проверьте, существует ли «cols», если это так, объедините «видимую» строку, а если нет, добавьте новую запись. После этого у вас будет нужный массив.

array_merge здесь не работает, потому что он просто объединит 2 или более массивов.

+0

Это в значительной степени то, что я имел в виду. Я просто задавался вопросом, существует ли какой-то метод «squash» массива в php – gpcola

Смежные вопросы