如何改变php数组输出


How to change php array output

我有以下功能:

public function albums($artist) {
        $artist = $this->db->sanitize($artist);
        $query = "
            SELECT `album`, `cover`
        FROM `albums`
            join `artists`
                on `albums`.`artistsID` = `artists`.`id`
        WHERE `artists`.`artist` = ? 
        ";
        $stmt = $this->db->mysqli->prepare($query);
        $stmt->bind_param('s', $artist);
        $stmt->execute();
        $result = $stmt->get_result();
        while($row = $result->fetch_assoc()) {
            $data[] = $row;
        }
        return $data;
    }

可以看到,这将返回一个包含album名称和cove文件路径的数组。数组输出如下所示:

Array
(
    [0] => Array
        (
            [album] => Album name
            [cover] => file path
        )
    [1] => Array
        (
            [album] => Album name
            [cover] => file path
        )
) 

如您所见,它返回一个包含01的数组,以及一个包含albumcover的数组。

我希望它是一个数组,更容易使用while循环。所以我可以这样写:

while($row = $data) {
    echo $row['album'].' <img src="'.$row['cover'].'">';
}

,而不是像我现在必须做的2 foreach循环。我的问题是如何得到一个更容易使用的数组就像你通常做的那样:

<?php
$query = mysqli_query($connect, "SELECT `username` FROM `users` WHERE `id` = 1");
while($row = mysqli_fetch_assoc($query)) {
    echo $row['username'];
} //Just as an example to make the question a bit more understandable 
?>
我希望有人能帮我解决这个问题。如果您需要更多的信息请告诉我。

我希望它是一个数组,更容易使用while循环

你应该使用foreach循环来解决这个问题,然后整个"问题"自己解决,而不需要进一步干预数组结构。

你正在使用fetch_assoc()所以…

while($row = $result->fetch_assoc()) {
   echo $row['album'] . ' <img src="' . $row['cover'] . '">';
}