2016-05-20 34 views
-1

我已经搜索过这个,找不到它,它应该很简单,但现在我被套牢了。原谅我 - 我只待了几个月。我需要一个计数器内的计数器

我需要一个计数器内的PHP,这样我配对$ Id1与$ Id2,然后$ Id3,然后$ Id4等,为一个循环通过,然后为第二个循环对$ Id2与$ Id3,然后$ Id4,然后$ Id5等我从一个SQL查询得到Ids,然后我使用他们两个来运行他们的关系计算,但首先我只需要结构来运行这两个循环,一个另一个。感谢您的帮助和耐心。

编辑补充什么,我到目前为止有:

$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>'; 
        } 

       } 

     }   

} 
+0

你不会先试一试,并发布结果吗?这将大大有助于解释你的目标。 – ExcellentSP

+0

是的,因为没有人知道你在说什么。编辑了 – AbraCadaver

+0

以包含我的内容。抱歉。 – ngtess

回答

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这样会破坏你的输入数组,所以如果你需要做别的事情与它为好,使用这种方法之前,做它的一个副本。

相关问题