我搜索过这个,找不到它,它应该很简单,但现在我已经克服了。请原谅我 - 我只是在这里待了几个月。
我需要一个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>';
}
}
}
}
答案 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
会破坏您的输入数组,因此如果您还需要对其进行其他操作,请在使用此方法之前复制它。