如何不使用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
相关产品推荐
相关产品推荐

