2016-09-26 24 views
-1

嘿,我已经返回一个函数,它需要一些命令,并从库存数组中减去它们...但是当运行该函数时,它只是更新函数中的库存,并且原来的库存不会改变..我知道这是与范围,但我不知道如何做到这一点.. 我该怎么做?你能帮我吗?如何使用函数更新一个数组,PHP

function updateInventory ($inv) { 
    foreach($_SESSION["inventory"] as $bookDetails) { 
     foreach($_POST['orders'] as $k => $v) { 
      if($bookDetails['title'] == $k && $v == "hardcover") { 
       $bookDetails['hc-quantity']=intval($bookDetails['hc-quatinty'])-1;  
      }  
     } 
    } 
} 
+2

难道是'hc-quatinty'的错误拼写? –

+0

如果原始库存是您的会话,那么您必须重新分配会话数组以更新它。 – Rasclatt

+0

为什么函数不使用'$ inv'参数? – Barmar

回答

2

将数组赋值给变量时,它获取数组的副本,因此对该变量的更改不会影响原始数组。您可以使用参考来防止复制。

function updateInventory ($inv) { 
    foreach($_SESSION["inventory"] as &$bookDetails) { 
     foreach($_POST['orders'] as $k => $v) { 
      if($bookDetails['title'] == $k && $v == "hardcover") { 
       $bookDetails['hc-quantity']--;  
      }  
     } 
    } 
} 
相关问题