0

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

2 回答 2

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;
    }
}
于 2013-09-11T01:52:51.680 回答
0

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

$newArray = array_merge($array, $array) 

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

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

实际上,您正在从数组的一个键创建一个数组。

于 2013-09-11T01:48:07.400 回答