我有从DB返回的结果,我想循环通过槽并使用它们对它们进行某种排序,以便按类型对它们进行排序,然后回显它们,但它仅返回最后一个DB条目。
<?php
require_once 'classes/Database.php';
require_once 'classes/products/Product.php';
require_once 'classes/products/Book.php';
require_once 'classes/products/DVD.php';
require_once 'classes/products/Furniture.php';
$db = new Database;
$productList = $db->query('SELECT * FROM products ORDER BY created_at DESC');
$results = $db->resultSet();
foreach ($results as $result) {
switch ($result->type) {
case 'book':
$product = new Book($result->id, $result->name, $result->price, $result->size);
break;
case 'dvd':
$product = new DVD($result->id, $result->name, $result->price, $result->size);
break;
case 'furniture':
$product = new Furniture($result->id, $result->name, $result->price, array($result->size));
break;
}
}
$products[] = $product;
?>
//在下面,您可以看到我尝试输出数据的部分,但是仅返回最后的结果。
<?php foreach ($products as $product): ?>
<p class="item">SKU: <?php echo $product->id; ?></p>
<p class="item">Name: <?php echo $product->name; ?></p>
<p class="item">Price: <?php echo $product->price; ?></p>
<p class="item">Size: <?php echo $product->formatSize(); ?></p>
<?php endforeach;?>
我想查看所有返回的结果。例如,如果我仅从切换用例中回显名称,它会返回我需要的内容,但似乎下部循环无法正常工作。
答案 0 :(得分:0)
在评论中得到人们的回答。我只需要简单地移动:
$products[] = $product;
在我的循环中。
谢谢大家。
答案 1 :(得分:0)
您在交换机盒上覆盖了$ product,尝试执行类似操作,应该可以:
$x = -1;
foreach ($results as $result) {
$x++;
switch ($result->type) {
case 'book':
$product[$x] = new Book($result->id, $result->name, $result->price, $result->size);
break;
case 'dvd':
$product[$x] = new DVD($result->id, $result->name, $result->price, $result->size);
break;
case 'furniture':
$product[$x] = new Furniture($result->id, $result->name, $result->price, array($result->size));
break;
}
}