2015-08-23 123 views
1

昨天这个函数还好,我不知道为什么它现在不能返回数组值。如何从函数返回数组?

我试图转储出Xxxx的值......结果是完美的......但是当我在返回$ dumplinesArray(last return)之前转储时,我只得到第一个数组[0]的值......这是从另一个功能传递......我不知道为什么......任何人都可以指出它?

并且在它返回数组之后,我从另一端得不到任何东西。这是调用这个函数并获得数组值。

function findEntireGroupDownlinesMemberID($downlinesArray, $index) 
{ 
    $downlineDB = $this->getDistributorInformation($downlinesArray[$index]); 
    if ($downlineDB) { 
Xxxx 
     if ($downlineDB->getLeftPositionDistCode()) { 
      array_push($downlinesArray, $downlineDB->getLeftPositionDistCode()); 
     } 

     if ($downlineDB->getRightPositionDistCode()) { 
      array_push($downlinesArray, $downlineDB->getRightPositionDistCode()); 
     } 
     $index++; 
     return $this->findEntireGroupDownlinesMemberID($downlinesArray, $index); 
    } 
    return $downlinesArray; 
} 
+0

您需要通过引用传递数组''findEntireGroupDownlineMemberID(&$ downlinesArray,$ index){'。看看[传递参考](http://php.net/manual/en/language.references.pass.php) – Cyclonecode

+0

嗨旋风,我试过了,但是显示了第n个。它给了我500内部服务器错误 –

回答

0

如果需要修改原始$downlinesArray数组,你需要将它传递给你的函数by its reference。 此外,你得到一个错误,因为你的代码永远不会达到第二个返回语句。检查片段:

{ 
    if ($downlineDB) { //if this is true, the 2nd return statement will never get executed. 
    Xxxx 
     if ($downlineDB->getLeftPositionDistCode()) { 
      array_push($downlinesArray, $downlineDB->getLeftPositionDistCode()); 
     } 

     if ($downlineDB->getRightPositionDistCode()) { 
      array_push($downlinesArray, $downlineDB->getRightPositionDistCode()); 
     } 
     $index++; 
     return $this->findEntireGroupDownlinesMemberID($downlinesArray, $index); //function exits here 
    } 
    return $downlinesArray; 
} 

$downlineDB评价是假的,你得到的是预期的第一阵列值array[0]

+0

嗨尼克,是的。这实际上是我想要的。它会循环直到没有下线,然后返回整个数组。 –