对于我的家庭作业,我不得不使用“广度优先搜索”方法解决搜索问题,因此决定在PHP中执行此操作(不知道这是一个好主意还是不好的主意),现在问题已解决,并且我可以通过两种方式打印解决方案,但是从这两种方式中,其中一种表现很奇怪。
与我的问题有关的代码片段是这样的:
$jarSet = new JarSet();
$searchTree[] = $jarSet;
foreach ($searchTree as $index => &$jarSet){
// echo '$index: '.$index.'<br>'; <--- Way#1: Works fine and shows correct indices
$success = jarFilledOneExistsIn($jarSet); //<--- Check whether any of the jars contains 1 litre of water
if(!$success){
generateChildren($jarSet,$searchTree);
} else {
// echo '$index: '.$index.'<br>'; <--- Way#2: Shows indices different from the ones in Way#1
print_solution($index,$jar_set_action_list);
}
if($index==10000) break; //<--- Keeps searching until index 10,000
}
我希望两个$index
都打印相同的数字,但是它们是不同的,并且我已经检查了它们,事实证明,以第一种方式打印的数字是正确的答案。但是,为什么方法2确实给出了不同的结果?