PHP,MYSQL组合来自mysqli_fetch_array的数组

时间:2016-03-22 22:41:58

标签: php jquery mysql arrays ajax

此代码是将事件提供到FullCalendar并从this略微修改的函数的一部分。我的编码知识充其量是最小的,现在已经存在了几天。

  • 我的MYSQL数据分为两部分
  • 分开日期和时间
  • 当前功能仅接受DATETIME或TIMESTAMP格式

解决方案:

  • 将数组中的DATE和TIME组合成DATETIME

我们假设MYSQL表:

CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(11) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `sdate` date NOT NULL,
  `stime` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `edate` date NOT NULL,
  `etime` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我们假设函数:

{
    $events = array();
    $query = mysqli_query($con, "SELECT * FROM test");
    while($fetch = mysqli_fetch_array($query,MYSQLI_ASSOC))
    {
    $e = array();
    $e['id'] = $fetch['id'];
    $e['title'] = $fetch['title'];
    $e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']);
    $e['end'] = array_push($e,$fetch['edate'],$fetch['etime']);

    array_push($events, $e);
    }
    echo json_encode($events);
}

问题:

$e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']);
$e['end'] = array_push($e,$fetch['edate'],$fetch['etime']);

无论输入什么数据,结果为'4'。添加的数组越多,即使数据是字符串,$ e的值也只会增加1。对我来说这是进步,因为我尝试了其他像$ a + $ b或array_combine,设置多个数组实例,如:

$e['start'] = $fetch['sdate'];
$e['start'] = $fetch['stime'];
$e['end'] = $fetch['edate'];
$e['end'] = $fetch['etime'];

没有人奏效。是否甚至可以组合数组以产生除了包含在其中的数组之外的其他内容?非常感谢你们所有的时间和阅读。

1 个答案:

答案 0 :(得分:0)

事实:

$e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']);
$e['end'] = array_push($e,$fetch['edate'],$fetch['etime']);

如果考虑array_push的定义,返回4是完全正常的,它声明它返回,我引用:

  

数组中新的元素数。

由于有问题的数组是e,我们知道已经存在索引为startend的元素,而您的array_push包含另外两个元素,这些元素会导致4.

因此,了解array_push的重要一点是,它不会返回数组,而是修改作为参数给出的第一个数组。因此,为了您的示例,您应该只做:

array_push($e['start'], $fetch['sdate'], $fetch['stime']);
array_push($e['end'], $fetch['edate'], $fetch['etime']);