嵌套的Foreach循环 - 如果我从更大或更小的数组大小开始是否重要?

时间:2017-09-08 14:52:50

标签: php arrays loops foreach

这里可能是一个愚蠢的问题,但我想应该问专家。我有一个foreach循环,在一个数组中有大约41,000个值,我有另一个foreach循环,在另一个数组中有大约40个值。我的问题是,我开始使用哪个foreach循环对我来说并不重要,但是我需要递归循环这两个数组并想知道PHP内存是否存在差异,或者如果我开始消耗使用较大的循环而不是从较小的循环开始,以及如果数组中的项目与内存消耗有关,例如,如果数组中的对象与文本字符串值相关。例如:

$products = array(
    0 => array('id' => 1, 'product' => 'My Product 1'),
    1 => array('id' => 2, 'product' => 'My Product 2'),
    2 => array('id' => 3, 'product' => 'My Product 3'),
    // and so on up to index of 39...
);
$users = // this is an array of objects and is over 41,000 entries long...  The objects contain only 2 properties.

所以,我的问题是,我在这里开始使用哪个数组来获取php中的速度,可靠性,性能和内存消耗?

foreach($products as $product)
{
    foreach($users as $user)
    {
        // Do Something with the values of $product/$user
    }
}

VS

foreach($users as $user)
{
    foreach($products as $product)
    {
        // Do Something with the values of $user/$product
    }
}

对于速度,可靠性,性能和内存的原因,我也愿意采用其他方式(可能还有其他类型的循环)。但有一件重要的事情是我需要每个$product$user

的值

2 个答案:

答案 0 :(得分:3)

答案是:不是真的,除非你进入微观优化。 40 * 41000与41000 * 40相同。

内存占用量可能存在非常微小的差异,具体取决于您首先选择的内容,因为第一个数组的元素在迭代后可能未设置,但我怀疑差异确实很小。

答案 1 :(得分:0)

您从哪个数组开始是否重要?不,可能有所不同。但我不这么认为。

如果它适用,更好的解决方案神话是循环只为小数组和查询数据库过滤的每个产品的用户数组分开。但这取决于你的数据以及你在循环中所做的事情。