好的,我不知道为什么这不起作用,也许你们其中一个绅士可以帮助我。
$new_upline = RetrieveUpline($root_referral_id, array());
echo ("The upline after return: <BR>");
var_dump ($new_upline);
function RetrieveUpline($root_ref_id, $upline){
$referrer = mysql_query("SELECT id, username, referral_ID, total_points_earned, isbanned FROM members WHERE id = ".$root_ref_id);
$rows = mysql_num_rows($referrer);
$upline_size = count($upline);
if ($rows>0){
while($feed = mysql_fetch_array($referrer, MYSQL_ASSOC)){
$upline[$upline_size] = $feed;
RetrieveUpline($upline[$upline_size]['referral_ID'], $upline);
}
}else{
echo ("The upline before return: <BR>");
var_dump($upline);
return $upline;
}
}
函数内的var_dump按预期工作。返回只返回任何内容,即使我将其设置为原始文本。我知道这可能很简单,但我现在已经烧坏了。
答案 0 :(得分:1)
试试这个版本:
<?php
function RetrieveUpline($root_ref_id, $upline = array()) {
// Sanitize input
$root_ref_id = (int) $root_ref_id;
// Do query
$query = "
SELECT id, username, referral_ID, total_points_earned, isbanned
FROM members
WHERE id = $root_ref_id
";
$result = mysql_query($query); // What if this query fails? Add error handling here...
// Loop results
while ($feed = mysql_fetch_assoc($result)) {
$upline[] = $feed;
$upline = RetrieveUpline($feed['referral_ID'], $upline);
}
// Free mysql result resource
mysql_free_result($result);
// Return new array
return $upline;
}
$new_upline = RetrieveUpline($root_referral_id);
var_dump($new_upline);
您需要通过引用传递$upline
参数,或者从任一选项返回结果 - 是否有结果。我会选择返回每个结果选项,因为这意味着在调用函数之前不需要初始化结果数组。这种方法的缺点是它会占用更多的内存,所以你可以使用这个版本:
<?php
function RetrieveUpline($root_ref_id, &$upline) {
// Make sure $upline is an array (for first iteration)
if (!is_array($upline)) $upline = array();
// Sanitize input
$root_ref_id = (int) $root_ref_id;
// Do query
$query = "
SELECT id, username, referral_ID, total_points_earned, isbanned
FROM members
WHERE id = $root_ref_id
";
$result = mysql_query($query); // What if this query fails? Add error handling here...
// Loop results
while ($feed = mysql_fetch_assoc($result)) {
$upline[] = $feed;
RetrieveUpline($feed['referral_ID'], $upline);
}
// Free mysql result resource
mysql_free_result($result);
}
RetrieveUpline($root_referral_id, $new_upline);
var_dump($new_upline);
答案 1 :(得分:0)
我知道这不是问题但是,也许您应该阅读有关获取“分层数据”并使用它的内容。你现在这样做的方式非常......让我说,“慢”。