我需要柜台内的柜台

时间:2016-05-20 19:18:31

标签: php loops for-loop counter

我搜索过这个,找不到它,它应该很简单,但现在我已经克服了。请原谅我 - 我只是在这里待了几个月。

我需要一个PHP中的计数器内的计数器,这样我将$ Id1与$ Id2,然后$ Id3,然后$ Id4等配对,用于单个循环,然后用于第二个循环对$ Id2 with $ Id3,然后是$ Id4,然后是$ Id5等。我从sql查询中获取了ID,然后我使用它们来运行计算它们的关系,但首先我只需要结构来运行这两个循环,一个在其他。感谢您的帮助和耐心。

编辑添加到目前为止的内容:

$collection = [];

$sql = 'SELECT id, name FROM table';                                                                                                                                                                                                                                                                                                                                                        
$result = mysql_query($sql);


while($row = mysql_fetch_assoc($result))

    {           
        $collection[] = $row;
    }   
        $ct = count($collection);
        for ($i = 0; $i < $ct; $i++)                
        {

            $Id1 = $collection[$i]['id'];       
            for ($j = 0; $j < $ct; $j++)
                {
                    $Id2 = $collection[$j]['id'];   
                    if($Id1 != $Id2){
                    echo 'IDs: ' . $Id1 . '   ' . $Id2 . '<br>';
                    }

                }

        }           

}   

1 个答案:

答案 0 :(得分:0)

如果您将查询中的ID提取到如下数组:$ids = [1,2,3,4,5,6,7,8];,则可以使用array_chunk获取对的列表,然后移出第一个元素,并重复此过程,直到数组是空的。

while ($ids) {                          // repeat until empty
    $pairs = array_chunk($ids, 2);      // split into pairs
    foreach ($pairs as $pair) {
        if (count($pair) == 2) {        // verify that you have a pair (last element will 
                                        // have only one item when count($ids) is odd)
            var_dump($pair);            // do something with your pair of IDs
        }
    }
    $remove_first = array_shift($ids);  // shift off the first ID
}

请注意,使用这样的array_shift会破坏您的输入数组,因此如果您还需要对其进行其他操作,请在使用此方法之前复制它。