2013-09-29 137 views
1

我有这个函数应该返回一个数组,但它返回NULL。我认为它可能与它生成的数组大小有关,因为它有时可以正常工作。我试图在返回之前做一个var_dump,它总是显示我需要的数组,但函数输出的var_dump只显示NULL。函数应该返回数组,但返回NULL而不是

function getAllUploads($videoFeed, $videos = array(), $counter = 1){ 
    foreach($videoFeed as $videoEntry){ 
     if($videoEntry->extensionElements[6]->extensionAttributes['permission']['value'] == "allowed"){ 
      $videos[] = array("videoID" => $videoEntry->getVideoId(), "uploaded" => ytToMySQLDateTime($videoEntry->getPublished()->getText())); //date('Y-m-d H:i:s', $videoEntry->getPublished()->getText()) 
     } 
     $counter++; 
    } 

    try{ 
     $videoFeed = $videoFeed->getNextFeed(); 
    }catch(Zend_Gdata_App_Exception $e){ 
     return $videos; 
    } 

    if($videoFeed){ 
     getAllUploads($videoFeed, $videos, $counter); 
    } 
} 
+3

除非'Zend_Gdata_App_Exception'被抛出此函数不返回任何内部的功能。 – TheWolf

+0

没有回报是最后一行?似乎很麻烦.... – FloydThreepwood

+0

是的,我知道。但最终应该抛出异常。尽管如此,我仍会尝试返回其他地方。 – CupOfTea696

回答

2

你应该返回最后if()声明

function getAllUploads($videoFeed, $videos = array(), $counter = 1){ 
    foreach($videoFeed as $videoEntry){ 
     if($videoEntry->extensionElements[6]->extensionAttributes['permission']['value'] == "allowed"){ 
      $videos[] = array("videoID" => $videoEntry->getVideoId(), "uploaded" => ytToMySQLDateTime($videoEntry->getPublished()->getText())); //date('Y-m-d H:i:s', $videoEntry->getPublished()->getText()) 
     } 
     $counter++; 
    } 

    try{ 
     $videoFeed = $videoFeed->getNextFeed(); 
    }catch(Zend_Gdata_App_Exception $e){ 
     return $videos; 
    } 

    if($videoFeed){ 
     return getAllUploads($videoFeed, $videos, $counter); 
    } 
} 
+0

你甚至不能放松最后的'如果'?否则,你需要另一个回报。 – FloydThreepwood

+0

那么'catch'会做另一个返回,如果它没有捕获'if($ videoFeed)'将会返回 – doitlikejustin

+1

它工作,谢谢你! – CupOfTea696