Your code is essentially equivalent to:
$item = array_pop($array);
while ($item) {
findMoreItems($item, $array);
$item = array_pop($array)
}
function findMoreItems($item, &$array) {
$newItem = someFuncFromServer($item);
if ($newItem) {
array_push($array, $newItem);
}
}
, , , , , - , foreach. foreach , , array_pop array_push .