背景:我有一个看起来像这样的数据库。(PHP/MySQL)将数据库结果转换为数组的问题
TITLE ANDROID OS X WINDOWS World of Goo 1 1 1 Superman 64 GOTY Edition 0 1 1 Seinfeld: The Game 1 0 1
等等,意在代表游戏合集。有一个代表标题的varchar列,然后是每个平台的布尔值。
我的愿望是用PHP来把该数据库到页面,上面写着
Super Mario 64 (N64)
World of Goo (Windows, Android)
等等,刚刚上市关闭该平台的标题是供。 (Windows)(Android)或(Windows,Android)(Windows,Android)(Windows,Android)(Windows,Android)取决于我使用的解决方案。
这是写的东西。
$q = mysqli_query($c,"SELECT * FROM GAMES");
while ($row = mysqli_fetch_assoc($q)) {
$platforms = array();
foreach ($row AS $column => $value) {
if ($column == "Name") {
echo "<br />" . $value;
continue;
}
if ($value == 1) {
array_push($platforms,$column);
}
if (count($platforms)) {
print_r($platforms);
}
}
}
这段代码的目的是
- 遍历一排每一个项目。
- 如果您正在使用的单元格是名称,请对其进行回显。
- 如果你所在的单元格中有一个“1”,那么我们拥有该平台的游戏,因此将该平台的名称存储在一个数组中。
- 在该行的末尾,显示该数组。
现在,这里的问题:如果我执行的代码,该阵列完全形成,但我没有得到一个数组回来,我得到每列一个阵列在我的数据库,所以它只是回声平台一遍又一遍。如果我将第3行(“$ platforms = array();”)移动到foreach循环中,那么可以避免这个问题,但是我没有得到一个完全形成的数组,我得到一个单独的数组。阵列为每个单独的平台。
那么...哪里应该我要放那条线?我用我管理平台阵列的方式搞乱了一些简单的事情,但我不聪明或经验不足,无法解决这个问题。任何帮助都会很棒。
平台应该是一个多维数组。在'while($ row = mysql_'调用你将添加'$ platforms [$ name] = array',然后在'foreach'循环中添加平台;'array_push($ platforms [$ name],$ column );' – Luceos