2016-09-26 1 views
-1

Hey Ich habe eine Funktion, die einige Aufträge nimmt und subtrahiert sie aus einem Array von Inventar ... aber wenn ich die Funktion ausführen ist es aktualisiert nur das Inventar innerhalb der Funktion und Das Original-Inventar ändert sich nicht .. Ich weiß, dass dies etwas mit Umfang zu tun hat, aber ich weiß nicht, wie es genau zu tun ist. Wie kann ich das tun? kannst du helfen?Wie man ein Array mit Hilfe einer Funktion aktualisiert, 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

Könnte es die falsche Schreibweise von 'hc-quatinty' sein? –

+0

Wenn das ursprüngliche Inventar Ihre Sitzung ist, müssen Sie Ihr Sitzungsarray neu zuweisen, um es zu aktualisieren. – Rasclatt

+0

Warum verwendet die Funktion nicht den Parameter '$ inv'? – Barmar

Antwort

2

Wenn Sie ein Array eines Variablen zuweisen, wird es eine Kopie des Arrays, so dass Änderungen an diesen Variablen nicht das ursprüngliche Array beeinflussen. Sie können eine Referenz verwenden, um das Kopieren zu verhindern.

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