背景:我有一个看起来像这样的数据库。
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);
}
}
}
此代码的意图是
现在问题是:如果我执行该代码,数组是完全形成的,但我没有得到一个数组,我在数据库中每列得到一个数组,所以它只是一遍又一遍地回应平台。
如果我将第3行(“$ platforms = array();”)移到foreach循环中,那么就避免了这个问题,但是我没有得到一个完整形成的数组,我为每个平台获得了一个单独的数组。
那么...... 应该我要放那条线?我用管理平台阵列的方式弄乱了一些简单的事情,但我并不聪明或经验不足以弄明白。任何帮助都会很棒。
答案 0 :(得分:0)
这可以解决您的问题。
while ($row = mysqli_fetch_assoc($q)) {
$platforms = array();
echo $row['TITLE'];
foreach($row as $column => $val):
$val == 1 ? $platforms[] = $column:;
endforeach;
echo '<pre>', print_r($platforms, true) ,'</pre>';
}