2011-12-14 7 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 право перед return, и у меня есть массив с множеством данных, но если я сделаю print_r ниже вызова этой функции, я ничего не получаю. Я делаю рекурсивный вызов, чтобы обеспечить меня есть обратный массив ... любые идеи, что я пропускаю

+3

* вздох * http://bobby-tables.com/ – Quentin

+2

У вас есть только оператор 'return' в случае' else'. Если вы не введете случай 'else', вы не вернете значение. –

+0

Я вхожу в другое ... Я делаю print_r прямо перед возвратом, и я получаю массив – Trace

ответ

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

, но не является повторным вызовом функции снова и во второй раз вокруг нее не будет нажмите, если он ударит по другому – Trace

+0

@Tamer, но вам все равно нужно поставить «возврат» перед функцией get_products. – mpratt

+0

См. Мое редактирование. Когда вы вызываете что-то рекурсивно, вам нужно использовать возврат, а не просто вызов метода. –

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

Я думаю, вам нужно добавить оператор возврата к 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

Я не понимал, что он хочет рекурсии ... Хорошее замечание! +1 –

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; 
} 

мне нужно, чтобы поймать возвращения из функции в массиве

Смежные вопросы