2011-05-21 3 views
1

Можно ли получить эти значения в функции и использовать эти функции вне здесь мой код:Как я могу получить значение изнутри функции?

<?php 
function cart() { 
    foreach($_SESSION as $name => $value){ 
    if ($value>0) { 
     if (substr($name, 0, 5)=='cart_') { 
     $id = substr($name, 5, (strlen($name)-5)); 
     $get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id)); 

     while ($get_row = mysql_fetch_assoc($get)) { 
      $sub = $get_row['price']*$value; 
      echo $get_row['name'].' x '.$value.' @ &pound;'.number_format($get_row['price'], 2).' = &pound;'.number_format($sub, 2).'<a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />'; 
     } 
     }  
     $total += $sub ; 
    } 
    } 
} 
?> 

теперь мой вопрос, как я могу получить значение $total? Я хочу использовать это значение вне функции функции fo, У меня есть 2 функции i cart и 1 скидка Я попытался вернуть $ total; (Внутри функции) , например

$final = cart() - discount(); 
echo $final; 

его эхо из функции Buth эхо-код, который R внутри функции не делают никакого mathmatical операцию.

+0

возвращение заявление .....? – Pushpendra

+0

Итак, вы попробовали 'return $ total;' в вашей 'cart()' функции? –

+0

Вы не должны делать эхо внутри таких функций. Потому что, если я хочу запустить вашу функцию, я неожиданно получил неожиданный вывод из вашего эха. Функция должна выполнить одно задание, вернуть значение и затем закончить. –

ответ

3

Вам необходимо «вернуть» значение. См. entry in the PHP manual for this. В принципе, return означает «выйти из этой функции сейчас». Кроме того, вы также можете предоставить некоторые данные, которые функция может вернуть.

Просто используйте return заявление:

<?php 
    function cart() 
    { 
     foreach ($_SESSION as $name => $value) { 
      if ($value > 0) { 
       if (substr($name, 0, 5) == 'cart_') { 
        $id = substr($name, 5, (strlen($name) - 5)); 
        $get = mysql_query('SELECT id, name, price FROM products WHERE id=' . mysql_real_escape_string((int)$id)); 
        while ($get_row = mysql_fetch_assoc($get)) { 
         $sub = $get_row['price'] * $value; 
         echo $get_row['name'] . ' x ' . $value . ' @ &pound;' . number_format($get_row['price'], 2) . ' = &pound;' . number_format($sub, 2) . '<a href="cart.php?remove=' . $id . '">[-]</a> <a href="cart.php?add=' . $id . '">[+]</a> <a href="cart.php?delete=' . $id . '">[Delete]</a><br />'; 
        } 
       } 
       $total += $sub; 
      } 
     } 

     return $total; 
    } 
?> 
+0

эй, я сделал это, но его дисплей также отображает эхо-код, который является серединой моей функции, смотря на мой вопрос. и скажите мне способ захватить единственное $ total value – hamp

0

Если вы положили return $total в самом конце функции (справа перед последней фигурной скобкой), вы должны быть в состоянии для использования результата.

0
  1. Ваш глобальный охват может использоваться. То есть

    $s = 1; 
    function eee() 
    { 
    global $s; 
    $s++; 
    } 
    echo $s; 
    
  2. Ваш может есть вар/обратный вар ... если вернуться ваша потребность более, что 1 значение - использовать массиву

    function eee($s) 
    { 
        return $s++; 
    } 
    eee($s=1); 
    echo $s; 
    

Предпочитают 2'd. Причина, по которой работает глобальная область действия - может вызвать проблемы, когда приложение становится большим.

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