PHP使用函数外部的变量

时间:2013-05-15 09:55:48

标签: php function

我想知道是否有人可以帮助我。

我正在编写一些PHP函数,我想在函数中使用变量,然后在函数外部使用更新的变量。

例如

$subTotal += $priceToShow * $ct_qty;
adminCharge($subTotal);
function adminCharge($loggedInfoprice, $subTotal){
    if (($loggedInfoprice == 5)||($loggedInfoprice == 6)){
    $packagingCurrency = "$";
    $packagingPrice = "63";
    $packagingPricing = $packagingCurrency.$packagingPrice;
}else {
    $packagingCurrency = "£";
    $packagingPrice = "30";
    $packagingPricing = $packagingCurrency.$packagingPrice;
}
if(isset($packagingPrice)){
    $subTotal = $subTotal + $packagingPrice;
}
}

<?php echo $subTotal; ?>

echo'd $subTotal似乎只显示函数之前的值。

是否可以从函数中提取$subTotal$packagingPricing

提前致谢。

更新了功能

5 个答案:

答案 0 :(得分:3)

function adminCharge(&$subTotal){
// do things
}

$subTotal = adminCharge($subTotal);
function adminCharge($subTotal){
 //do things
 return $subTotal;
}

在第一种情况下,您将$subTotal变量作为参考传递,因此所有更改都将反映到“外部”变量。

在第二种情况下,您传递它并返回新值,因此很容易理解为什么工作。

请注意

然而,第一种解决方案可能会导致您难以理解和调试的副作用

更新

如果要“提取”(如此返回)两个变量,可以执行以下操作

list($subTotal,$packagingPrice) = adminCharge($subTotal);
function adminCharge($subTotal){
    if(isset($packagingPrice)){
        $subTotal = $subTotal + $packagingPrice;
    }
    return array($subTotal, $packagingPrice);
}

答案 1 :(得分:1)

function adminCharge($subTotal, $packagingPrice){
    if(isset($packagingPrice)){
        $subTotal = $subTotal + $packagingPrice;
    }

    return $subTotal;
}

像这样使用:

$subTotal = adminCharge($subTotal, $packagingPrice);

答案 2 :(得分:1)

你没有返回任何东西,所以你可以使用全局变量,但我不推荐它。看看,因为这是你的要求:http://www.php.net/global

在我看来,改变你的功能:

function adminCharge($subTotal){
    global $packagingPrice
    if(isset($packagingPrice)){
         $subTotal = $subTotal + $packagingPrice;
    }
    return $subTotal; 
}

$subTotal += $priceToShow * $ct_qty;
$subTotal = adminCharge($subTotal);

另外请记住,你的函数中没有$ packagingPrice,所以我用全局添加它。否则它将无效:)。

答案 3 :(得分:0)

您需要使用pass the variable by referenceglobal

选项1

function adminCharge(&$subTotal){
if(isset($packagingPrice)){
    $subTotal = $subTotal + $packagingPrice;
}

return array($subTotal, $packagingPrice);

}

选项2

  function adminCharge()
  {
    global $subTotal;
    if(isset($packagingPrice))
    {
       $subTotal = $subTotal + $packagingPrice;
    }

    return  array($subTotal, $packagingPrice);

 }

答案 4 :(得分:0)

您必须了解变量范围read here

简而言之,有3种选择。

  1. 使用global关键字:

    $ a = 0;

    function foo(){     全球$ a;     $ a + = 1; }

  2. 使用传递参考:

    $ a = 0;

    function foo(&amp; $ b){     $ b + = 1; }

    FOO($ a)的

  3. 收集函数的返回值:

    $ a = 0;

    function foo($ b){    返回$ b + 1; }

    $ a = foo($ a);