所以这个解释可能有点冗长,但我会尽量使它简洁。
我有一个DB查询,它引入了3个不同的标记ID,其中2个与4个集线器ID关联,而1个仅与3关联。
我返回所有标记,并按id对结果进行排序(因此标记1的所有4个结果都被分组,2的所有4个结果,3的所有3个结果),如下所示:
Array
(
[0] => 40BD32751DF1
[1] => 40BD32751DF1
[2] => 40BD32751DF1
[3] => 40BD32751DF1
[4] => 10CEA9FD173A
[5] => 10CEA9FD173A
[6] => 10CEA9FD173A
[7] => 10CEA9FD173A
[8] => 10CEA9FCFE26
[9] => 10CEA9FCFE26
[10] => 10CEA9FCFE26
)
然后我做一个while循环,循环每个标签id(3x)。其中,我使用array_键在array_列搜索中查找每个标记id的数组索引,计算我有多少个结果(4、4、3),然后使用array键获取该行的数据,并使用loop number将该行数据推送到一个数组中以供以后排序:
while($currentTag = pg_fetch_assoc($tagList)) {
$tkeys = array_keys(array_column($tagDataArray, 'devmac'), $currentTag['devmac']);
$tempArray = array();
for($k=0; $k < count($tkeys); $k++){
array_push($tempArray, $tagDataArray[$tkeys[$k]]);
}
foreach($tempArray as $sigkey => $sigrow) {
$sigsort[$sigkey] = $sigrow['devrssi'];
}
array_multisort($sigsort, SORT_DESC, $tempArray);
updateArticles($tempArray[0]);
}
现在问题来自于那个临时数组。第一个ID有4个结果,第二个是4个,第三个是3个,
然而
对于第三个id,尽管我使用每个while循环pass(每个id)重新初始化它,但不知怎的,我仍然在数组中得到4个项。第二个id的第四个结果,最后作为第三个id的第四个结果。
这怎么可能?我已经想了好几个小时了,但没有任何进展。$tkeys在第三个id上给了我3,所以for循环运行3次,一切都是有意义的,直到数组推到某个东西决定要保留的地方。我甚至在temparray中添加了一个print_r,在它第三次运行之前,它是空的!我不知道它从哪里爬回来。
谢谢。