在php中使用foreach循环中的where编码

在php中使用foreach循环中的where编码,php,mysql,Php,Mysql,嘿,伙计们,我昨天有个主意。你能帮我做这个吗。 这是密码 foreach($categoriesDetail as $categories) { foreach($subCategoriesDetail as $subCategories) { if($categories->id == $subCategories->cat_id) { foreach($teamsDetail as $team)

嘿,伙计们,我昨天有个主意。你能帮我做这个吗。 这是密码

foreach($categoriesDetail as $categories)
{
    foreach($subCategoriesDetail as $subCategories)
    {
        if($categories->id == $subCategories->cat_id)
        {
            foreach($teamsDetail as $team)
            {
                if($subCategories->id == $team->sub_cat_id)
                {
                    echo $team->name;
                }
            }
        }
    }
}
将运行并生成正确的结果,但我希望不运行额外的迭代。换句话说

foreach($categoriesDetail as $categories)
{
    foreach($subCategoriesDetail as $subCategories where $categories->id == $subCategories->cat_id)
    {
        foreach($teamsDetail as $team where $subCategories->id == $team->sub_cat_id)
        {
            echo $team->name;
        }
    }
}

我知道这在php或任何其他语言中都是不可能的,但我需要一个替代方案,或者将来他们可能会添加此选项以提高性能。

您可以更改数组的结构方式,使其采用以下形式:

$subCategoriesDetail[$cat_id] = array();

$teamsDetail[$sub_cat_id] = array();
然后你会使用:

foreach($categoriesDetail as $categories)
{
    foreach($subCategoriesDetail[$categories->id] as $subCategories)
    {
        foreach($teamsDetail[$subCategories->id] as $team)
        {
            echo $team->name;
        }
    }
}

如果您想通过php实现这一点,那么您必须等待不切实际的时间


您可以通过sql连接来实现这一点。获取表的内部联接并获得结果。这可以通过查询来实现。这就是为什么要进行连接以提高性能。如果不能将它们连接起来,则可以编写代码。我们一定会努力提高您系统的性能。

这只是语法上的糖分,PHP必须和您使用if时做的完全一样,它无法发挥一些魔力


有些人喜欢这种语言功能,有些人不喜欢,我自己也不愿意,因为我认为一种语言做同样的事情的功能越多,学习该语言就越困难。

+1因为“我认为一种语言做同样的事情的功能越多,学习该语言就越困难。”需要减少迭代次数以提高性能。