PHP:合并具有相同标题的数组

时间:2013-09-11 01:43:10

标签: php arrays

我有一些来自循环的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 )
      )  

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

您正在将单个数组合并为空。

$newArray = array_merge($array, $array) 

合并这两个数组但你正在做

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

在效果中,您正在从数组的一个键创建一个数组。