我有一个装有6种产品的产品系列。我需要在没有foreach的情况下列出这些产品,因为每个产品都有不同的布局结构。 如何在foreach之外调用每个产品?
我的代码是:
<?php
$produtos = array(1115,1105,1019,1017,1013,1011);
$_productCollection=$this->getLoadedProductCollection();
$_productCollection = clone $this->getLoadedProductCollection();
$_productCollection->clear()
->addIdFilter($produtos)
->load();
$_helper = $this->helper('catalog/output');
?>
变量$ produtos是一个数组,其中包含我想要的产品ID
然后,我需要为每个产品属性设置变量。我这样做:
<?php foreach ($_productCollection as $_product): ?>
<?php
if($_product->getId() == $produtos[0]){
$productName1 = $_helper->productAttribute($_product, $_product->getName(), 'name');
$productImage1 = '<img border="0" src=".'echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(143,215);'." />';
$precoCru1 = $_product->getFinalPrice(); $productPrice1 = Mage::helper('core')->currency($precoCru1, true, false);
$productUrl1 = $_product->getProductUrl();
}
elseif($_product->getId() == $produtos[1]){
$productName2 = $_helper->productAttribute($_product, $_product->getName(), 'name');
$productImage2 = '<img border="0" src=".'echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(143,215);'." />';
$precoCru2 = $_product->getFinalPrice(); $productPrice1 = Mage::helper('core')->currency($precoCru1, true, false);
$productUrl2 = $_product->getProductUrl();
}
?>
<?php endforeach; ?>
产品名称,网址和价格正常,但图片没有。当我回显每个产品图片时,它给了我相同的网址
答案 0 :(得分:3)
你无法完全避免使用foreach
,因为这不是编程的工作方式,而是尝试一下
$array = array();
$c=1;
foreach($product_collection as $product)
{
$array['product_'.$c] = $product;
$c++;
}
您将能够参考每个产品
var_dump($array['product_1']->getData());
var_dump($array['product_2']->getData());
如果你真的想要混淆下一个程序员,请尝试上面的代码,但是这样做
extract($array);
var_dump($product_1->getData());
extract
函数会将数组的每个键导出为PHP变量。
答案 1 :(得分:0)
您可以尝试获取这些项目,然后将它们用作常规数组,并按索引引用元素:
$items = $collection->getItems();
$first = $items[0];
$second = $items[1];
或者如果您只需要第一个:
$first = $collection->getFirstItem();
查看lib / Varien / Data / Collection.php