foreach
có thể lặp lại bất kỳ mảng hoặc đối tượng nào triển khai có thể duyệt. Kết quả của PDOStatement::fetch()
là bản ghi / hàng. Chỉ cần cung cấp tuyên bố để nói trước.
foreach($statement as $row) { ...
API tốt hơn cho các kết xuất như vậy là XMLWriter . Nó ghi kết quả trực tiếp vào một luồng, mà không cần lưu trữ toàn bộ tài liệu trong bộ nhớ trước. Việc sử dụng API XML cũng sẽ xử lý việc thoát khi cần thiết. Đây là một ví dụ nhỏ:
$statement = [
[ 'name' => 'one', 'location' => '...', /* ... */],
[ 'name' => 'two', 'location' => '...', /* ... */]
];
$xmlWriter = new XMLWriter();
$xmlWriter->openUri('php://stdout');
$xmlWriter->startDocument();
$xmlWriter->setIndent(2);
$xmlWriter->startElement('markers');
foreach ($statement as $row) {
$xmlWriter->startElement('marker');
$xmlWriter->writeAttribute('name', $row['name']);
/* other attributes ... */
$xmlWriter->endElement();
}
$xmlWriter->endElement();
$xmlWriter->endDocument();
Đầu ra:
<?xml version="1.0"?>
<markers>
<marker name="one"/>
<marker name="two"/>
</markers>
Trong DOM, bạn tạo, nối và định cấu hình các nút. Đây là một ví dụ nhỏ: https://stackoverflow.com/a/21760903/2265374