从MYSQL创建3D数组会导致php

从MYSQL创建3D数组会导致php,php,mysql,arrays,pdo,mysqli,Php,Mysql,Arrays,Pdo,Mysqli,我试图用数据库表中的信息填充网格。我使用蛮力和mysql成功地实现了这一点,但现在我正在将代码升级到mysqli,我希望以更优雅的方式实现这一点。 这是我想要的输出: |--------------------|--------------------| |col0row0 title |col1row0 title | |col0row0 author |col1row0 author | |col0row0 email |col1row0 ema

我试图用数据库表中的信息填充网格。我使用蛮力和mysql成功地实现了这一点,但现在我正在将代码升级到mysqli,我希望以更优雅的方式实现这一点。 这是我想要的输出:

|--------------------|--------------------| |col0row0 title |col1row0 title | |col0row0 author |col1row0 author | |col0row0 email |col1row0 email | |-----------------------------------------| |col0row1 title |col1row1 title | |col0row1 author |col1row1 author | |col0row1 email |col1row1 email | |-----------------------------------------| | and so on for subsequent rows
这样行吗?有没有一种优雅的方式来实现我希望做的事情?我非常感谢您的指导。谢谢

表格:

CREATE TABLE `comments` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(128) DEFAULT NULL,
    `author` varchar(128) DEFAULT NULL,
    `email` varchar(128) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
<?php
// PDO
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$statement = $pdo->query("SELECT * from comments");
$results = $statement->fetchAll(PDO::FETCH_ASSOC);

$columns = 2;

//make two dimensional array
$multiArray = Array();
$row = Array();
$cellNumber = 1;
foreach ($results as $result) {
    $row[] = $result;
    if (0 == ($cellNumber % $columns)) {
        $multiArray[] = $row;
        $row = Array();
    }
    $cellNumber++;

}
var_dump($multiArray);
php:

CREATE TABLE `comments` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(128) DEFAULT NULL,
    `author` varchar(128) DEFAULT NULL,
    `email` varchar(128) DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
<?php
// PDO
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$statement = $pdo->query("SELECT * from comments");
$results = $statement->fetchAll(PDO::FETCH_ASSOC);

$columns = 2;

//make two dimensional array
$multiArray = Array();
$row = Array();
$cellNumber = 1;
foreach ($results as $result) {
    $row[] = $result;
    if (0 == ($cellNumber % $columns)) {
        $multiArray[] = $row;
        $row = Array();
    }
    $cellNumber++;

}
var_dump($multiArray);
找到了答案:

for($x=0;$x<$numberSides;$x++) {
for ($y=0;$y<$numberRows;$y++) {        
    $queryString[$x][$y] = "SELECT * FROM comments WHERE topic_id = '{$topicid}' AND side = '{$x}' AND row = '{$y}'";
    $result[$x][$y] = mysqli_query($db_connection,$queryString[$x][$y]) or die(mysqli_error($db_connection));
    while($eachcomment = mysqli_fetch_assoc($result[$x][$y])) {
        $array[$x][$y][] = $eachcomment;
    }
}

for($x=0;$xArrsy[0]=数组[''']['']这是3DThank@Styx。我的表格中的每个注释都已经包含一个列和一个行字段,因此我想直接将其转换到网格中。我认为您的解决方案没有考虑到这一点,所以您将注释放在表格中。为了进一步解释:每个网格方块可能有多个注释。因此我将记录可能是这样的:
记录0:TitleA/AuthorA/EmailA/0/0记录1:TitleB/AuthorB/EmailB/1/0记录2:TitleC/AuthorC/EmailC/0/1记录3:TitleD/AuthorA/EmailA/1/1记录4:TitleE/AuthorB/EmailB/0/0
因此记录0和记录4都在网格方格0,0中。