По сути, это не так уж и много, так как я вставил echo
в свой код.Это CLI-скрипт, который должен быть однопоточным.
echo "\$map: ".json_encode($map)."\n\$mapHarvests: ".json_encode($mapHarvests)."\n";
foreach($map as $key => $section)
if($players[$id]->pos < $section[0])
break;
elseif($players[$id]->pos < $section[1] && isset($mapHarvests[$key]))
{
$harvesters[$id] = [$currentTime, $key];
break;
}
echo "\$map: ".json_encode($map)."\n\$mapHarvests: ".json_encode($mapHarvests)."\n";
Вот что выводит консоль:
$map: [[-560,-240],[240,560]]
$mapHarvests: [[[0],1],[[1,2,3],1]]
$map: [[-560,-240],[240,560]]
$mapHarvests: [[[0],1],[240,560]]
Почему модифицируется $mapHarvests
?Я попытался переключить isset()
с array_key_exists()
, и то же самое получилось.Есть более причудливый взгляд на код:
foreach($map as $key => $section)
if(sectionStartsAfterPlayerPos())
break;
elseif(playerIsInSection() && sectionCanBeHarvested())
{
registerPlayer();
break;
}
Правка 1: вот как объявляются переменные:
$map = [0 => [-560, -240], 1 => [240, 560]];
$mapHarvests = [0 => [[0], 1], 1 => [[1, 2, 3], 1]];
$harvesters = [];
$currentTime = time(); // this one is inside the main loop