Индекс не остается фиксированным внутри цикла foreach в php - PullRequest
0 голосов
/ 07 ноября 2018

Для домашней работы мне пришлось решить задачу поиска с помощью метода Breadth-First-Search, и я решил сделать это на 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 s напечатают одни и те же числа, но они разные, и я проверил их, оказалось, что числа, напечатанные первым способом, являются правильными ответами. Но почему на самом деле путь № 2 дает разные результаты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...