Tôi có một mảng dữ liệu tổng tất cả các mục trong giỏ hàng cho tất cả các sản phẩm dưới dạng một số.Cách lưu trữ số lượng sản phẩm trong một mảng
Tôi đã cố gắng tìm ra cách để lấy tổng số dữ liệu() tất cả các tổng khác nhau của tất cả các mục khác nhau trong giỏ hàng và chúng được trình bày trong lớp dữ liệu được phân cách bằng dấu phẩy. Tôi hy vọng điều đó đúng.
if ($order->getId()) {
$items = $order->getAllVisibleItems();
$itemIds = array();
$itemNames = array();
$itemPrices = array();
$itemMargins = array();
$itemTypes = array();
$itemGenders = array();
$itemSports = array();
$itemCategoryIds = array();
$itemCategoryNames = array();
/** @var Mage_Sales_Model_Quote_Item $item */
foreach ($items as $item) {
// Get the parent item - it is NOT included in the quote due to
// customizations made by the OrganicInternet module for simple
// product pricing. So I had to come up with another way to get it.
$options = $item->getProductOptions();
$parent = $item->getProduct();
if (array_key_exists('info_buyRequest', $options)) {
if (array_key_exists('cpid', $options['info_buyRequest'])) {
$parentId = $options['info_buyRequest']['cpid'];
$parent = Mage::getModel('catalog/product')->getCollection()
->addAttributeToSelect('name')
->addAttributeToSelect('season')
->addAttributeToSelect('gender')
->addAttributeToSelect('sport')
->addAttributeToFilter('entity_id', $parentId)
->getFirstItem();
}
}
$itemIds[] = $item->getSku();
$itemNames[] = $parent->getName();
$itemPrices[] = $item->getBasePrice() ?: 0;
$itemMargins[] = $this->_calculateMargin($parent, null, $item);
$itemTypes[] = $parent->getAttributeText('season');
$itemGenders[] = $parent->getAttributeText('gender');
$itemSports[] = $parent->getAttributeText('sport') ?: 'Other';
$categories = $this->_getAllCategoryIdsAndNames($item->getProduct());
$itemCategoryIds[] = $categories['id'];
$itemCategoryNames[] = $categories['name'];
}
// # Products
$data['u1'] = count($items);
trên sẽ trở lại:
dataLayer = [{ "visitorLoginState": "Đã lưu IP ngoài", "visitorType": "không đăng nhập", "visitorLifetimeValue": 0, "visitorExistingCustomer": "Không", "u1": 2, "u2": ["889623392590", "889623135517"]
Nó hiển thị tổng cộng 2 sản phẩm cho biến U1 và hai sku cho biến u2 trong dữ liệu mảng.
Nếu tôi có nhiều sản phẩm cho sku đầu tiên tôi muốn nó tách riêng số lượng. tức là .. "u1":1,1,3
Tôi có sử dụng array_sum
hoặc một số loại mảng đa chiều để có được nhu cầu của mình không?
Có cần phải lưu trữ tất cả dữ liệu này trong một mảng đa lồng nhau khổng lồ không? Đây là khó khăn để làm theo, tốt nhất. Bạn có thể có một thời gian dễ dàng hơn nếu bạn đã phá vỡ điều này xuống một cấp độ nguyên tử hơn. – Matt1776
@ Matt1776, tôi đang mở cho các đề xuất hoặc bất kỳ phương tiện nào khác để nhận dữ liệu. – thismethod
Tôi gợi ý một chút về refactor, tôi không biết vấn đề của bạn hay dữ liệu của bạn đủ tốt để đưa ra gợi ý như vậy, ngoài ra bạn có thể muốn xem xét sử dụng nhiều hơn một mảng, hoặc một đối tượng hash/map/dictionary hoặc đơn giản là lồng ghép ít dữ liệu hơn. Nó trở nên rất khó khăn để theo dõi dữ liệu khi nó được lồng trong một đối tượng. Hãy suy nghĩ lại cách bạn muốn lưu trữ và truy xuất dữ liệu và giải pháp sẽ trở nên rõ ràng hơn cho bạn. – Matt1776