【问题标题】:I need a counter within a counter我需要一个柜台内的柜台
【发布时间】:2016-05-20 19:18:30
【问题描述】:

我已经搜索过这个,找不到它,它应该很简单,但现在我眼花缭乱。原谅我 - 我只在这几个月。

我需要一个计数器在 php 中的一个计数器中,这样我将 $Id1 与 $Id2 配对,然后是 $Id3,然后是 $Id4 等,以进行单个循环,然后对于第二个循环配对 $Id2 和 $ 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>';
                    }

                }

        }           

}   

【问题讨论】:

  • 您不打算先自己尝试并发布结果吗?这将极大地帮助您解释您的目标。
  • 是的,因为没人知道你在说什么。
  • 已编辑以包含我拥有的内容。对不起。

标签: php loops for-loop counter


【解决方案1】:

如果您将查询中的 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 会破坏您的输入数组,因此如果您还需要对其进行其他操作,请在使用此方法之前对其进行复制。

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多