Array Ebenen
Tolwin
- php
Hallo Forum,
ich habe eine Frage zu einem Array. Ich versuche ein in einer Session gespeichertes Array nach jedem submitten über ein dynamisches Array zu befüllen. Dies soll über folgenden Code passieren:
PHP:--------------------------------------------------------------------------------
session_start();
include ("db_connect.php");
$result_land = mysql_query("SELECT * FROM Laender ORDER BY LAND ASC");
$LAND = 0;
if(!isset($_SESSION["i"]))
{
$_SESSION["i"] = 0;
echo "Session i ist Null<br>";
}
if(isset($_POST['LAND_AUSWAHL']))
{
if($_POST['LAND_AUSWAHL'] > 0)
{
$LAND = $_POST['LAND_AUSWAHL'];
$result_landinfo = mysql_query("SELECT * FROM Laenderdaten WHERE LAND_ID = '$LAND'");
$row_landinfo = mysql_fetch_array($result_landinfo);
$result_landname = mysql_query("SELECT * FROM Laender WHERE LAND_ID = '$LAND'");
$row_landname = mysql_fetch_array($result_landname);
$BETREUER_1 = $row_landinfo['BETREUER_ID'];
$BETREUER_2 = $row_landinfo['BETREUER_ID_2'];
$result_betreuer_1 = mysql_query("SELECT * FROM Betreuer WHERE BETREUER_ID = '$BETREUER_1'");
$result_betreuer_2 = mysql_query("SELECT * FROM Betreuer WHERE BETREUER_ID = '$BETREUER_2'");
$row_betreuer_1 = mysql_fetch_array($result_betreuer_1);
$row_betreuer_2 = mysql_fetch_array($result_betreuer_2);
$ISO = $row_landinfo['ISO_CODE'];
$result_waehrung = mysql_query("SELECT * FROM Waehrung WHERE ISO_CODE = '$ISO'");
$row_waehrung = mysql_fetch_array($result_waehrung);
echo $_SESSION["i"] ."<br>";
$LAND_ARRAY[$_SESSION["i"]]['LAND_ID'] = $row_landinfo["LAND_ID"];
$LAND_ARRAY[$_SESSION["i"]]['LANDNAME'] = $row_landname["LAND"];
$LAND_ARRAY[$_SESSION["i"]]['ZEITZONE'] = $row_landinfo["ZEITZONE"];
$LAND_ARRAY[$_SESSION["i"]]['WAEHRUNG'] = $row_waehrung["WAEHRUNG"];
if(!is_array($ARRAY_LAND))
{
echo "NOT ISSET<br>";
$ARRAY_LAND = $LAND_ARRAY;
$_SESSION["ARRAY_LAND"] = $ARRAY_LAND;
$_SESSION["i"]++;
}
else
{
echo "ISSET TRUE<br>";
array_push ($_SESSION["ARRAY_LAND"], $LAND_ARRAY );
$_SESSION["i"]++;
}
if(is_array($_SESSION["ARRAY_LAND"]))
{
$_SESSION["ARRAY_LAND"] = $ARRAY_LAND;
}
echo $_SESSION["i"] ."<br>";
}
}
else
{
$_POST['LAND_AUSWAHL'] = 0;
}
if(isset($_SESSION["ARRAY_LAND"]))
{
$LAND_TABLE = $_SESSION["ARRAY_LAND"];
}
else
{
$LAND_TABLE = array();
}
print_r($LAND_TABLE);
--------------------------------------------------------------------------------
Allerdings gibt mir print_r ein Array aus das ab dem zweiten Eintrag um eine Dimension erweitert ... aber warum ist das so? Hier die print_r Ausgabe:
PHP:--------------------------------------------------------------------------------
Array (
[0] => Array (
[LAND_ID] => 660
[LANDNAME] => Afghanistan
[ZEITZONE] => 4,50
[WAEHRUNG] => UAE Dirham
)
[1] => Array (
[1] => Array (
[LAND_ID] => 284
[LANDNAME] => Benin
[ZEITZONE] => 1,00
[WAEHRUNG] =>
)
)
[2] => Array (
[2] => Array (
[LAND_ID] => 38
[LANDNAME] => Austria
[ZEITZONE] => 1,00
[WAEHRUNG] => EUR Euro
)
)
[3] => Array (
[3] => Array (
[LAND_ID] => 500
[LANDNAME] => Ecuador
[ZEITZONE] => -5,00
[WAEHRUNG] =>
)
)
--------------------------------------------------------------------------------
Kann mir bitte jemand sagen woran dies liegt?
hi,
$LAND_ARRAY ist ein array.
if(!is_array($ARRAY_LAND))
{
echo "NOT ISSET<br>";
$ARRAY_LAND = $LAND_ARRAY;
$_SESSION["ARRAY_LAND"] = $ARRAY_LAND;
hier erstellst du dir $_SESSION["ARRAY_LAND"] mit dem inhalt von $LAND_ARRAY, sofern $ARRAY_LAND nicht bereits ein array ist.
else
{
echo "ISSET TRUE<br>";
array_push ($_SESSION["ARRAY_LAND"], $LAND_ARRAY );
hier fügst du in das bestehende array $_SESSION["ARRAY_LAND"] ein neues element ein - welches als inhalt dann wiederum ein array hat (nämlich $LAND_ARRAY).
gruß,
wahsaga
Hallo wahsaga,
danke für die Hilfe!
Siehst Du evtl. eine Möglichkeit dies zu verhindern - also die Erstellung einer neuen Dimension?
Gruß
Tolwin
hi,
Siehst Du evtl. eine Möglichkeit dies zu verhindern - also die Erstellung einer neuen Dimension?
ich würde auf das gehampel mit deinem zählindex $_SESSION["i"] vermutlich ganz verzichten, und einfach die schreibweise $array[] = $wert zum hinzufügen neuer arrayelemente benutzen (*).
da solltest du dann einfach dein neu befülltes $LAND_ARRAY zuweisen können, ohne dass es zu einer weiteren überflüssigen unterebene im array kommt.
gruß,
wahsaga
(*) http://www.php.net/manual/de/language.types.array.php#language.types.array.syntax.modifying
Alles klar, danke - werds versuchen
Gruß
Tolwin