Funktion um einem Array Werte hinzu zu fügen

Ich bin am erarbeiten einer Rechnungsausgabe. Für jeden neuen Posten der Rechnung möchte ich wie untenstehend die Funktion addOutput aufrufen.

PHP:
$this->addOutput(updatekosten, 150, "",  "205,91,69",0);

Die Funktion soll anschliessend einem array (genannt output_array) die übergebenen Werte hinzufügen:

PHP:
function addOutput($titel, $price, $red_price, $color, $cat){
  
 
  $output_array[$_SESSION[pos]][title] = $titel;
  $output_array[$_SESSION[pos]][price] = $price;
  if(($cat=='0') AND ($red_price!='0')){
   $output_array[$_SESSION[pos]][percent] = $_SESSION[percent];    
   $red_price = ($price*(100-($_SESSION[percent])))/100;
  }else{
   $output_array[$_SESSION[pos]][percent]=0;    
   if($red_price!='0'){
    $red_price = $price;
   }
  }
  $output_array[$_SESSION[pos]][red_price] = $red_price;
  $output_array[$_SESSION[pos]][color] = $color;
  $output_array[$_SESSION[pos]][cat] = $cat;
  if($red_price=='0'){
   $normal = 0;
  }else{
   $normal =$output_array[$_SESSION[pos]][price];
  }
  $this->addPriceTotal($normal,$output_array[$_SESSION[pos]][red_price]);
  $_SESSION[pos]++;
 }

So wie die Funktion im moment programmiert ist, wird immer wenn die Funktion aufgerufen wird ein neues output_array erzeugt. Ich möchte aber dem bestehenden output_array Werte hinzufügen. Wie mache ich das genau? Zudem habe ich noche eine weitere Frage, ich möchte gerne das output_array in einer anderen Funktion ansprechen ? Wie mache ich dieses von aussen zugänglich ?


Herzlichen Dank für die Hilfe im vorraus

Ruthy
 
Hallo!

So wie ich das verstanden habe willst du $output_array mehr oder weniger Global verwenden.
Sieht nach PHP4 aus...

Am besten so:
PHP:
class myClass
{
   // Hier deklarierst du deine Variable, die du in anderen Funktionen haben willst
   var $output_array;

   function doThat()
   {
      // Hier übergibts du die Variable
      $var = $this->output_array;
   }

   function makeThat()
   {
      // Und hier gibts du Ihr den Wert des Arrays
      $this->output_array = array('bla' => 'irgendwas');
   }
}

Ansonsten
PHP:
function doThat()
{
   // Variable Gloal verwenden
   global $output_array;
   $var = $output_array;
}

Hoffe das war dein Problem

LG
crazy_root

//Edit: Hab ich fast vergessen: Bitte immer ausreichend Einrücken -> leichter zum Lesen und Durchdenken ;-)
 
Zuletzt bearbeitet:
Einem Array einen Wert hinten anhängen?

Das geht so:
PHP:
$dein_array[] = 'lalala';

Wenn du es global verwenden möchtest, mache es wie crazy_root es gesagt hat oder übergebe das Array einfach der Funktion.

PHP:
function test(&$test)
{
// Einen Wert anhängen
$test[] = 'test4';
}

$test = array('test1', 'test2', 'test3');
test($test);

foreach($test as $tmp)
{
print "$tmp<br />\n";
}
 
Zuletzt bearbeitet von einem Moderator:
Du hast drei Möglichleiten: Entweder …
  • du arbeitest mit einer Kopie des Arrays und weist diese nachher der Variable wieder zu:
PHP:
function foobar($array)
{
	// …
	return $array;
}
$array = foobar($array);
  • du arbeitest mit einer Referenz, also direkt mit dem Original-Array:
PHP:
function foobar(&$array)
{
	// …
}
foobar($array);
  • oder du holst die Variable in den Geltungsbereich der Funktion:
PHP:
function foobar()
{
	global $array;
	// …
}
foobar();
 
Hallo Zusammen!

Konnte das Problem wie es crazy_root beschrieben hat lösen. Auf die Lösung hätt ich eignetlich auch selber kommen müssen, naja beim nächsten Mal. Herzlichen Dank für die schnellen Antworten.

Gruess

Ruthy
 
Zurück