2013-09-11 3 views
0

У меня есть несколько php-массивов из цикла, все они имеют одно и то же имя. Теперь я хочу, чтобы объединить их, но это, кажется, не работает ...PHP: Объединение массивов с тем же названием

Вот мой цикл:

while($row = mysql_fetch_row($sql1)){ 
    $startzeit=strtotime($row[2]); 
    $endzeit=strtotime($row[3]); 
    $startzeit_format = date("Y-m-d",$startzeit); 
    $endzeit_format = date("Y-m-d",$endzeit); 
    $datearray[] = createDateRangeArray($startzeit_format,$endzeit_format); 
    } 

Это должно быть коды сращивания:

for($i = 0; $i<count($datearray); $i++) 
    { 
    $datesarray = array_merge($datearray[$i]); 
    } 

Во всяком случае, руководство объединения отлично работает:

$datesarray = array_merge($datearray[0], $datearray[1], $datearray[2], $datearray[3]); 

Это приводит к желаемому выходу. Однако я бы хотел автоматизировать его, поскольку отдельные массивы поступают из базы данных, и я не буду добавлять $ datearray [4], $ datearray [5] и т. Д., Каждый раз, когда в mySQL появляется новая запись.

результат print_r($datearray):

Array ( 
    [0] => Array ([0] => 2014-03-08) 
    [1] => Array ([0] => 2013-09-15) 
    [2] => Array ([0] => 2013-09-21) 
    [3] => Array ([0] => 2013-10-03 
        [1] => 2013-10-04 
        [2] => 2013-10-05 
        [3] => 2013-10-06) 
    ) 
+1

«все они с тем же названием», что это значит? – xdazz

ответ

1

Что вы могли бы искать, чтобы выровнять массив:

$datesarray = call_user_func_array('array_merge', $datearray); 

Это идентичный тому, как вы вручную сливаясь элементы массива.

Смотрите также: call_user_func_array()

Вы также можете сделать это в цикле с помощью простого цикла:

$datesarray = array(); 

while ($row = mysql_fetch_row($sql1)) { 
    // ... 
    foreach (createDateRangeArray($startzeit_format,$endzeit_format) as $item) { 
     $datesarray[] = $item; 
    } 
} 
+0

и создать экземпляр '$ datearray = array();' вне цикла MySQL while, чтобы он сохранялся между всеми строками. – Prix

+0

@Prix Да, хотя технически это не жесткое требование; это PHP в конце концов :) –

+0

Жаль, что я не могу удвоить голос: P оба предложения должны отлично работать для потребностей OP, а позже лучше ИМХО. – Prix

0

Вы объединяете единый массив ничего.

$newArray = array_merge($array, $array) 

Объединяет эти два массива, но вы делаете

$array = array_merge($datearray[$i]); 

В аффекте, вы создаете массив из одного ключа массива.

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