是否可以从函数内部获取值并使用函数外部的值?
这是我的代码:
<?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.' @ £'.number_format($get_row['price'], 2).' = £'.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 个功能,1 购物车和 1 个折扣。
我尝试了return $total;
(功能内部)
例如
$final = cart () - discount ();
echo $final;
它回显出这两个函数,但函数内部的代码不执行任何数学运算。
你需要"返回"这个值。 有关此内容,请参阅 PHP 手册中的条目。 基本上,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 . ' @ £' . number_format($get_row['price'], 2) . ' = £' . 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;
}
?>
在函数中写入return $total;
如果将
return $total
放在函数的最末尾(就在最后一个大括号之前),您应该能够使用该结果。
-
您可以使用全局范围。
$s = 1; function eee() { global $s; $s++; } echo $s;
-
你可以得到var/return var...如果你需要返回超过1个值 - 使用数组
function eee( $s) { return $s++; } eee($s=1); echo $s;
更喜欢 2'd。导致全局范围操作 - 当应用程序变得很大时,可能会导致问题。