2016-09-26 21 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']--;  
      }  
     } 
    } 
} 
相關問題