PHP 按值调用向主函数返回较少的值
PHP call by value returning less value to the main function
我有一个奇怪的问题,我写了一个递归函数来从 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;
}
}
我的代码有什么问题..?
您正在使用递归函数,但内部调用未使用值 return...
固定码为:
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;
}
}
我有一个奇怪的问题,我写了一个递归函数来从 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;
}
}
我的代码有什么问题..?
您正在使用递归函数,但内部调用未使用值 return...
固定码为:
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;
}
}