2011-12-14 140 views
0

这里是我的功能为什么我的函数没有返回任何东西?

function get_products($business_id){ 
    $sql = "SELECT 
      b.*, b.name as business_name, p.builder_id, 
      bs.*, p.price, p.name as product_name, p.description, p.image, p.per_station, p.skip_screen 
     FROM 
      builder_product bp 
     JOIN builder_step bs ON bp.builder_step_id = bs.builder_step_id 
     JOIN builder b ON bp.builder_id = b.builder_id 
     WHERE b.business_id = '{$business_id}' 
     ORDER by b.step_number, b.price"; 
    $result = mysql_query($sql); 
    $steps = array(); 
    while($row_r = mysql_fetch_assoc($result)){ 
     $steps["all_steps"]['business_id'] = $business_id; 
     $steps["business_name"] = $row_r['business_name']; 
     $steps["builder_id"] = $row_r['builder_id']; 

    if (count($steps) == 0) { 
     $business_id = 59; 
     get_products($business_id); 
    }else{ 
     $steps["business_id"] = $business_id; 
     return $steps; 
    } 
} 

这里是调用函​​数

$products = get_products($_GET['business_id']); 

为什么我没有得到这个函数返回....我之前做的print_r权返回,我有我的数组吨吨的数据,但如果我做一个print_r调用这个函数下面,我什么也得不到。我做一个递归调用,以确保我有一个返回数组...我很想念

+3

* sigh * http://bobby-tables.com/ – Quentin 2011-12-14 15:05:03

+2

在`else`情况下只有`return`语句。如果你不输入`else`的情况下,你将不会返回一个值。 – 2011-12-14 15:05:24

+0

我输入其他...我正在做一个print_r之前返回,我得到的数组 – Trace 2011-12-14 15:06:57

回答

0
if (count($steps) == 0) { 
    $business_id = 59; 
    get_products($business_id); 
}else{ 
    $steps["business_id"] = $business_id; 
    return $steps; 
} 

当你点击如果代替了其他任何想法,什么都不会返回。

编辑:改为return get_products($business_id)

0

你不必在你的回报,如果:

 
if (count($steps) == 0) { 
     $business_id = 59; 
     get_products($business_id); 
     return $whatYouwant; 
    }else{ 
     $steps["business_id"] = $business_id; 
     return $steps; 
    } 

0

这是全功能?看起来像你缺少一个右括号:

function get_products($business_id){ 
    $sql = "SELECT 
      b.*, b.name as business_name, p.builder_id, 
      bs.*, p.price, p.name as product_name, p.description, p.image, p.per_station, p.skip_screen 
     FROM 
      builder_product bp 
     JOIN builder_step bs ON bp.builder_step_id = bs.builder_step_id 
     JOIN builder b ON bp.builder_id = b.builder_id 
     WHERE b.business_id = '{$business_id}' 
     ORDER by b.step_number, b.price"; 
    $result = mysql_query($sql); 
    $steps = array(); 
    while($row_r = mysql_fetch_assoc($result)){ 
     $steps["all_steps"]['business_id'] = $business_id; 
     $steps["business_name"] = $row_r['business_name']; 
     $steps["builder_id"] = $row_r['builder_id']; 

     if (count($steps) == 0) { 
      $business_id = 59; 
      get_products($business_id); 
     }else{ 
      $steps["business_id"] = $business_id; 
      return $steps; 
     } 
    } 
} 
1

我认为你需要一个return语句添加到代码的if (count($steps) == 0)分公司:

if (count($steps) == 0) { 
    $business_id = 59; 
    return get_products($business_id); 
}else{ 
    $steps["business_id"] = $business_id; 
    return $steps; 
} 
0

我找到了解决办法....

if (count($steps) == 0) { 
    $business_id = 59; 
    $steps = get_products($business_id); 
    $steps["business_id"] = $business_id; 
    return $steps; 
}else{ 
    $steps["business_id"] = $business_id; 
    return $steps; 
} 

我需要赶上从数组中返回功能

相关问题