Globale Arrays?

Hallo bplaced-Community,

ich hab grad ein Problem. Ich möchte über eine Funktion vier Arrays erstellen. Diese Arrays sollen dann aber auch ausserhalb der Funktion verfügbar sein. Habe gehört ein Array “global” zu machen sei keine schöne Lösung. Hat einer ne Idee wie ich es schön lösen kann?

function read_while($section,$bb_code) {
	include('secure/mysql.ht');
	$sql = "SELECT * FROM system WHERE section = '".$section."'";
	mysql_query("SET NAMES 'utf8'");
	mysql_query("SET CHARACTER SET utf8");
	$query = mysql_query($sql);
	while($ds = mysql_fetch_object($query)) {
		$s1 = $ds->value1;
		$s2 = $ds->value2;
		$s3 = $ds->value3;
		$s4 = $ds->value4;
		$value1[] = $s1;
		$value2[] = $s2;
		$value3[] = $s3;
		$value4[] = $s4;
	};
};

Mit freundlichen Grüßen
Amityville

[code]<?php
header(“Content-Type: text/plain”);

echo “Lösung 1:\n”;
//-------------------
//Lösung 1 - “global”

$meinarray = array();
function myglobal(){
global $meinarray;
$meinarray[‘abc’] = ‘abc’;
$meinarray[‘def’] = ‘def’;
$meinarray[‘ghi’] = ‘ghi’;
}
$meinarray[‘123’] = 123;
myglobal();
print_r($meinarray);

echo “\n\nLösung 2:\n”;
//----------------
//Lösung 2 - ByRef

function mybyref(&$arr){
$arr[‘abc’] = ‘abc’;
$arr[‘def’] = ‘def’;
$arr[‘ghi’] = ‘ghi’;
}

$array1[‘hans’] = ‘peter’;
mybyref($array1);
print_r($array1);

$array2[‘karl’] = ‘heinz’;
mybyref($array2);
print_r($array2);

?>[/code]

mal ne kleine veranschaulichung.
Die erste Lösung greift gezielt auf eine Variable zu, muss allerdings innerhalb der Funktion als Global deklariert werden, weil php sonst innerhalb der Funktion eine “interne” Variable mit dem gleichen Namen erstellt. mit dem Schlüsselwort “global” greift php dann auf die “externe” Variable zu.

Die zweite Variante ist unabhängig vom “wahren” Variabelnamen. Man übergibt eine Variable/Array an die Funktion als ByRef (By Reference) und der Wert wird in die “Originale” Variable mit übernommen.

mfg Balmung

3.Möglichkeit:


$array=array();

function mythird()
{
   $GLOBALS['array'] = array(1,2,3,4);
}

Vielen Dank für die doch zahlreichen Lösungsmöglichkeiten meines Problems. Ich werde mal austesten, welche Methode mir am besten passt =)
mfg