Array in Function
Dirk Paschel
- php
Hallo!
Ich definiere ein Array.
Die Elemente des Arrays lassen sich abfragen.
In einem Funktionsaufruf steht das Array nicht zur
Verfügung!
Warum?
Was muss ich ändern?
Minifassung meines Scriptes:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Array-Test</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000"
VLINK="#800000" ALINK="#FF00FF">
<?
error_reporting(E_ALL);
$Arr[1][1] = "Eins";
$Arr[1][2] = "Zwei";
$Arr[1][3] = "Drei";
echo TEST(1);
$b = 1;
echo "Test:" . $Arr[$b][1] . $Arr[$b][2] . $Arr[$b][3] ;
function TEST($a) {
$output .= "Test:" . $a . $Arr[$a][1] . $Arr[$a][2] .
$Arr[$a][3] . "<br>";
$output .= "Test:" . $Arr[1][1] . $Arr[1][2] . $Arr[1][3]
. "<br>";
return $output;
}
?>
</BODY>
</HTML>
führt zu :
Notice: Undefined variable: Arr in
/home/www/web4/html/ingoneu/test.php on line 22
Notice: Undefined variable: Arr in
/home/www/web4/html/ingoneu/test.php on line 22
Notice: Undefined variable: Arr in
/home/www/web4/html/ingoneu/test.php on line 22
Notice: Undefined variable: Arr in
/home/www/web4/html/ingoneu/test.php on line 23
Notice: Undefined variable: Arr in
/home/www/web4/html/ingoneu/test.php on line 23
Notice: Undefined variable: Arr in /home/www/web4/html/ingoneu/test.php on line 23
Test:1
Test:
Test:EinsZweiDrei
Danke!
Ciao Dirk
Hi,
dein Problem liegt im Gültigkeitsbereich der Variablen. Du müsstest u.U. global benutzen, wobei es für die Lesbarkeit des Codes sinnvoll ist, verwendete Variablen auch als Parameter zu übergeben wenn sie von außen kommen...
Variablen-Geltungsbereich
MfG
Rouven
Hallo!
Was muss ich ändern?
<?php
error_reporting(E_ALL);
$Arr[1][1] = "Eins";
$Arr[1][2] = "Zwei";
$Arr[1][3] = "Drei";echo TEST(1);
$b = 1;
echo "Test:" . $Arr[$b][1] . $Arr[$b][2] . $Arr[$b][3] ;
function TEST($a,$ARR)
{
$output .= "Test:" . $a . $Arr[$a][1] . $Arr[$a][2] .
$Arr[$a][3] . "<br>";
$output .= "Test:" . $Arr[1][1] . $Arr[1][2] . $Arr[1][3]
. "<br>";
return $output;
}
$out = test(1,$ARR);
echo $out;
?>
Entweder Du übergibst eine Kopie des Arrays an die Funktion (wie hier gezeigt), oder Du übergibst eine Referenz auf die Variable:
function TEST($a,&$ARR)
Der Aufruf sieht dann in PHP aber genauso aus.
$out = test(1,$ARR);
Wenn eine Kopie übergeben wird, wird das Original-Array in der Funktion nicht geändert, egal was Du mit der Kopie anstellst. Wenn Du die Übergabe als Referenz vereinbarst, arbeitet die Funktion mit dem Original, was dann auch verändert werden kann, also quasi als zusätzlicher Rückgabewert dienen kann.
LG
Chris