【发布时间】:2016-03-11 15:01:17
【问题描述】:
我正在尝试删除对象中的前两项。例如,如果我想从数组中删除前两项,我会使用 array_slice($arrayName, 2)。
我已经在我的对象上尝试过这个(嘿,为什么不呢?我知道从技术上讲它不是一个数组,但我很乐观)但它没有用。
在搜索这个时,我发现的只是从数组中删除项目的方法。
$categories = array_slice(Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*'), 2);
foreach($categories as $category){
echo "<div class='col'>{$category->getName()}</div>";
}
在上面的示例中,我想在通过 foreach 循环运行它之前从 $categories(它们是“根类别”和“默认”)对象中删除前两个类别。解决这个问题的最佳方法是什么?我知道我能做到;
if($category->getName() != 'Root Category' && $category->getName() != 'Default'){
echo $category->getName();
}
但这感觉像是一个肮脏的解决方案。
编辑
阅读 Patrick Q 的评论后,我意识到这确实是一个对象数组。所以我现在的问题变成了,为什么在将 array_slice 应用于该数组时,会导致空白屏幕?不应用 array_slice 时循环工作正常。
编辑 2
忽略最后一次编辑。它是一个对象。
至于可能的重复,虽然(有问题的)问题确实帮助我解决了我的问题,但我认为,它们本质上是不同的问题。这个问题的核心是为对象寻找一个有用的替代 array_slice() 的方法。另一方面,链接的问题想要找到一种方法,特别是根据下拉属性过滤 Magento 集合。虽然他们可能到达了同一个目的地,但目的和旅程却大不相同。
【问题讨论】:
-
等等,
$categories不是category对象的数组吗? -
“空白屏幕”可能意味着错误。发生这种情况时您检查过错误日志吗?
-
但这感觉像是一个肮脏的解决方案。 ...这是我迄今为止从整个 Magento 中获得的感觉*叹息*跨度>
-
如果你将数组转换为非标准对象,你将失去所有方法对象
-
我从未使用过 Magento,但根据对 this question 的回答,似乎可以在您的收藏集上调用
addAttributeToFilter()函数,这可能会有所帮助。