使这个Magento嵌套循环更好

时间:2014-02-07 14:23:35

标签: php magento foreach nested-loops

我想把所有商店都放到Magento商店。所有商店,我的意思是来自所有网站的所有商店。我写了这段代码并且它可以工作,但我有点担心嵌套的foreach循环的复杂性。如果您认为我可以做一些不同的事情,请看看它并告诉我。

public function getAllStoresCustom(){

    $all_stores = array();

        foreach (Mage::app()->getWebsites() as $website) {
            foreach ($website->getGroups() as $group) {
                $all_stores [] = $group->getStores();      
            }
        }

    return $all_stores;
}

我只在Magento中找到了这些功能,所以我认为我必须使用它们,这似乎是唯一有效的组合。

非常感谢

2 个答案:

答案 0 :(得分:3)

试试这个:

$allStores = Mage::getModel('core/store')->getCollection();

然后在需要时循环$allStores

foreach ($allStores as $store) {
   //do something with $store
}

注意:您将获得一个ID为0的商店。这是管理商店视图。如果您希望所有没有管理商店视图的商店使用此功能:

$allStores = Mage::getModel('core/store')->getCollection()->setWithoutDefaultFilter()

答案 1 :(得分:1)

foreach()是一个非常有效的PHP函数,所以你可以打赌它不会是你的减速。如果您希望优化某些内容,请查看getStores()getGroups()函数的代码,因为这些函数是在迭代中调用的,而getWebsites()只调用一次。

如果您需要更多指导,请随时使用这些功能的内容更新您的问题。

您可能还想尝试https://codereview.stackexchange.com/获取更多经验丰富的意见,特别是因为您没有任何特定的编程问题/错误=)