将两个MySQL行放入一个PHP数组中



我正在为我的学校开发一个窄播系统,目前我正在使用JavaScript在主显示页面上的iFrame的URL之间轮换。

我希望能够通过PHP的后端更改这些值。然而,我不知道如何将2行(module_url和module_time(放入一个数组中并将其返回到JS。

浏览stackoverflow时,我尝试了各种代码,这一个有点奏效,只是它会抛出URL,比如:"var arrayObjects = ["https://domain.eu/dir/page.php","https://domain.eu/dir/page.php"]"。

(我希望数组显示:"var arrayObjects = ["https://domain.eu/dir/page.php", 20]"。其中URL代表新的iFrame源,20代表页面显示时间。(

因此,我的主要问题是,如何将2行放入1个数组中,以及如何确保数组显示正确的链接和模块时间。

<?php
$mysqli = new mysqli('localhost', 'user', 'pw', 'db');
if ($stmt = $mysqli->prepare("SELECT module_url FROM db")) {
$stmt->bind_result($name);
$OK = $stmt->execute();
}
//put all of the resulting names into a PHP array
$result_array = Array();
while($stmt->fetch()) {
$result_array[] = $name;
}
//convert the PHP array into JSON format, so it works with javascript
$json_array = json_encode($result_array);
?>
<script>
//now put it into the javascript
var arrayObjects = <?php echo $json_array; ?>
ALL OTHER JS CODE
</script>

Edit:module_time目前没有添加到MySQLi查询中。

首先,PHP数组应该是多维度的,比如:

$result_array[] = array($name, <time here>);

然后,由于您已经使用json_encode并将其分配给JS数组,因此它实际上已经是Javascript中的一个数组,也就是说,您已经可以访问以下元素:

arrayObjects[0][0]; <---- first element URL
arrayObjects[0][1]; <---- first element time

将JavaScript数组打印到HTML将显示为文本,如:

http://www.google.com,20,http://www.google.com,30

顺便说一下,您可以使用JSON.stringify((打印实际的Javascript数组,而不是文本,示例:

var array = JSON.stringify(<?php echo $json_array; ?>);
document.write(array);

将输出:

[["http://www.google.com",20],["http://www.google.com",30]]

最新更新