我怎样才能从函数内部获得价值?

时间:2011-05-21 13:53:47

标签: php

是否可以在函数内部获取这些值并使用函数之外的值 这是我的代码:

<?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的价值? 我想在功能上使用该值, 我有2个功能i购物车和1折扣 我试过返回$ total; (功能内部) 例如

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

它的echo out buth函数echo代码,其中函数内部不进行任何数学运算。

4 个答案:

答案 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;
  }
?>

答案 1 :(得分:0)

在函数

中写return $total;

答案 2 :(得分:0)

如果你将return $total放在函数的最末端(就在最后一个大括号之前),你应该能够使用结果。

答案 3 :(得分:0)

  1. 您可以使用全局范围。即

    $s = 1;
    function eee()
    {
     global $s;
     $s++;
    }
    echo $s;
    
  2. 你可以得到var / return var ...如果你需要返回更多的1个值 - 使用数组

    function eee( $s)
    {
      return $s++;
    }
    eee($s=1);
    echo $s;
    
  3. 首选2。导致全局范围操作 - 当app变大时可能会导致问题。