Вызов PHP по значению, возвращающий меньшее значение основной функции

У меня странная проблема, я написал рекурсивную функцию, чтобы получить больше результатов от Facebook. В вызываемой функции (рекурсивной) я возвращаю значения основной функции. В вызываемой функции, когда я печатаю возвращаемое значение, он отображает точное значение (обычно размер массива равен 90). Но в основной функции, когда я печатаю возвращаемое значение, оно всегда меньше (размер массива точно равен 50 каждый раз). Вот мой код ..

public function mainFunction(){
$response = $fb->get('/me?fields=id,name,accounts', $useraccesstoken);
$userData = $response->getDecodedBody();
$pages = $userData['accounts'];
$pages = $this->getMorePages($pages);
}

public function getMorePages($pages){
if(count($pages)>1 && isset($pages['paging']['next'])){
$morePages = file_get_contents($pages['paging']['next']);
$morePages = json_decode($morePages,true);
foreach($morePages['data'] as $page){
array_push($pages['data'],$page);
}
if(count($morePages)>1 && isset($morePages['paging']['next'])) {
$pages['paging']['next']=$morePages['paging']['next'];
$this->getMorePages($pages);
}
return $pages;
}else{
return $pages;
}
}

В чем проблема с моим кодом ..?

0

Решение

Вы используете рекурсивную функцию, но не используете значение, возвращаемое внутренним вызовом …

Фиксированный код:

public function getMorePages($pages){
if(count($pages)>1 && isset($pages['paging']['next'])){
$morePages = file_get_contents($pages['paging']['next']);
$morePages = json_decode($morePages,true);
foreach($morePages['data'] as $page){
array_push($pages['data'],$page);
}
if(count($morePages)>1 && isset($morePages['paging']['next'])) {
$pages['paging']['next']=$morePages['paging']['next'];

// Add return values to the main array
//$pages += $this->getMorePages($pages);
// For more support use array_merge function
$pages = array_merge( $this->getMorePages($pages), $pages )
}
return $pages;
}else{
return $pages;
}
}
1

Другие решения

Других решений пока нет …