You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用fetch_assoc(),通过对象数组生成div并输出字段值?

问题:如何不使用fetch_assoc(),通过循环生成div并输出对象的字段值

背景信息

关联数组示例

Array
(
    [id] => 1
    [name] => Vova
    [location] => San Diego
)

Array
(
    [id] => 2
    [name] => Rosa
    [location] => La Masa
)

曾使用fetch_assoc()生成表格行的写法

<?php while($row = $result->fetch_assoc()): ?>
    <tr>
        <td><?php echo $row['name'] ?></td>
        <td><?php echo $row['location'] ?></td>
        ...其他字段...
<?php endwhile; ?>

当前的bookPost类及相关函数

bookPost类构造函数

class bookPost {
    public function __construct($title, $grade, $isRead) {
        $this->title = $title;
        $this->grade = $grade;
        $this->isRead = $isRead;
    }
}

获取对象数组的getAllBooksPosts()函数

function getAllBooksPosts(): array
{
    $lines = file(DATA_FILE_BOOKS);
    $result = [];
    foreach ($lines as $line) {
        [$id, $title, $grade, $isRead] = explode(";", trim($line));
        $post = new bookPost(urldecode($title), $grade, $isRead);
        $post->id = $id;
        $result[] = $post;
    }
    return $result;
}

输出对象数组的getObjectArray()函数

function getObjectArray() {
    $result = getAllBooksPosts();
    foreach ($result as $v) {
        print_r($v);
    }
}

对象数组输出示例

bookPost Object
(
    [title] => Book1
    [grade] => 1
    [isRead] => 1
    [id] => 1
)

解决方案

直接遍历getAllBooksPosts()返回的对象数组,通过->访问对象属性,即可循环生成div元素,代码示例如下:

<?php
$books = getAllBooksPosts();
foreach ($books as $book): ?>
    <div class="book-card">
        <h3><?php echo htmlspecialchars($book->title); ?></h3>
        <p>评分:<?php echo htmlspecialchars($book->grade); ?></p>
        <p>是否已读:<?php echo $book->isRead == 1 ? '已读' : '未读'; ?></p>
        <p>书籍ID:<?php echo htmlspecialchars($book->id); ?></p>
    </div>
<?php endforeach; ?>

说明:

  • 用foreach遍历对象数组,每个元素为bookPost实例
  • 以$对象->属性名的格式直接调用对象字段,比如$book->title
  • 用htmlspecialchars()转义输出内容,避免XSS安全风险
  • 可根据需求给div添加类名、调整HTML结构,适配页面样式

内容的提问来源于stack exchange,提问作者Yethhoundz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:35:22