如何从保存为购物车格式的数据循环


How can I loop from a saved data as cart format?

我已经在Opencart网站上工作了几天。老开发人员将一些数据保存在一个旧表中,其中有一列名为cart。在本专栏中,我得到了一些数据,可以(我想)显示已经订购的产品、数量和价格。我需要制作一个foreach()循环并显示此信息。我该怎么做?保存数据的一个示例:a:3:{i:144;s:1:"2";i:172;i:2;i:193;i:1;}

这被称为序列化数组。在最基本的级别上,您可以unserialize()它并循环遍历购物车数据,如下所示:

$cart = unserialize('a:3:{i:144;s:1:"2";i:172;i:2;i:193;i:1;}');
foreach ($cart as $product_id => $quantity) {
    echo "Product ID: $product_id'n";
    echo "Quantity: $quantity'n'n";
}

输出:

Product ID: 144
Quantity: 2
Product ID: 172
Quantity: 2
Product ID: 193
Quantity: 1

如果有选项,事情会变得更复杂,与其复制购物车库功能,不如直接恢复购物车并使用Opencart的核心迭代产品:

// query the database
$query = $this->db->query("SELECT cart FROM " . DB_PREFIX . "table_name WHERE customer_id = '123'")->row;
// unserialize the resulting row
$cart = unserialize($query['cart']);
// initialize the session array
$this->session->data['cart'] = array();
// restore cart to session
foreach ($cart as $key => $value) {
    $this->session->data['cart'][$key] = $value;
}
// loop through products
foreach ($this->cart->getProducts() as $product) {
    print_r($product);
}