[英]PHP, MYSQL combining arrays from mysqli_fetch_array
此代码是饲料事件到功能的一部分FullCalendar并从稍微修改此 。 我的编码知识充其量是最少的,并且已经从事了几天。
解:
让我们假设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'];
而且没有一个工作。 甚至有可能合并数组以产生除其中包含的数组数量以外的其他内容? 非常感谢您抽出宝贵的时间和阅读。
事实:
$e['start'] = array_push($e,$fetch['sdate'],$fetch['stime']);
$e['end'] = array_push($e,$fetch['edate'],$fetch['etime']);
如果考虑到array_push的定义(它声明返回),则返回4是完全正常的,我引用:
数组中新的元素数。
由于所讨论的数组是e
,我们知道已经有索引为start
, end
的元素,并且array_push包含另外两个元素,其结果为4。
因此,要知道关于array_push的重要事情是它不返回数组,而是修改作为参数给出的第一个数组。 因此,为了使您的示例正常工作,您只需执行以下操作:
array_push($e['start'], $fetch['sdate'], $fetch['stime']);
array_push($e['end'], $fetch['edate'], $fetch['etime']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.