| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

03-11-2007, 23:26
|
|
Canonn
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 48
|
|
Anzahl der Variablen sind begrenzt?
Hallo Zusammen,
für ein Projekt habe ich mal ein Test-Script erstellt.
Aus einer "daten_01.txt" werden aus 12 Zeilen jeweils 32 Zeichen ausgelesen.
(das Auslesen funktioniert gut)
Die 32 Zeichen werden dann an "function calendar (..)" übergeben und zur Test
jeweils das Letzte Zeichen pro Zeile über ein "echo" befehl ausgegeben.
(und hier beginnt mein Problem)
Das ganze Script funktioniert NUR wenn ich nur 31 Zeichen pro Zeile auslese.
Ergänze ich auf 32 Zeichen, d.h ich lese nun 32 Zeichen aus und versuche
an "fuction calendar(..)" zu übergeben dann funktioniert mein Script nicht mehr.
So sieht mein txt Datei aus.
**************************** daten_01.txt**************
1 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 2 1 1 1 2 2 2 2 2 1 1 1 2 2 1 A
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 B
1 1 1 1 2 1 1 1 2 1 1 1 2 2 2 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 C
2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 1 1 2 1 2 1 2 1 2 2 2 2 2 1 D
1 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 2 1 1 1 2 2 2 2 2 1 1 1 2 2 2 E
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 F
1 1 1 1 2 1 1 1 2 1 1 1 2 2 2 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 G
2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 1 1 2 1 2 1 2 1 2 2 2 2 2 1 H
1 2 2 2 2 2 2 1 1 1 1 1 1 1 1 2 2 1 1 1 2 2 2 2 2 1 1 1 2 2 2 I
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 J
1 1 1 1 2 1 1 1 2 1 1 1 2 2 2 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 K
2 2 2 2 2 1 1 1 1 1 1 1 2 2 2 2 2 1 1 2 1 2 1 2 1 2 2 2 2 2 1 L
**********************************************************
und so ist mein Test-Script, hier mit 32 Zeichen auslesen pro Zeile, so wie sie nicht
funktioniert.
<html>
<head>
<title>Jahresüberblick</title>
<?php
function calendar($b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$b10,$b11,$b12,$b13,$b14,$b15,$b16,$b17,$b18,$b19,$b20, $b21,
$b22,$b23,$b24,$b25,$b26,$b27,$b28,$b29,$b30,$b31,$b32)
{
$b_[1]=$b1;
$b_[2]=$b2;
$b_[3]=$b3;
$b_[4]=$b4;
$b_[5]=$b5;
$b_[6]=$b6;
$b_[7]=$b7;
$b_[8]=$b8;
$b_[9]=$b9;
$b_[10]=$b10;
$b_[11]=$b11;
$b_[12]=$b12;
$b_[13]=$b13;
$b_[14]=$b14;
$b_[15]=$b15;
$b_[16]=$b16;
$b_[17]=$b17;
$b_[18]=$b18;
$b_[19]=$b19;
$b_[20]=$b20;
$b_[21]=$b21;
$b_[22]=$b22;
$b_[23]=$b23;
$b_[24]=$b24;
$b_[25]=$b25;
$b_[26]=$b26;
$b_[27]=$b27;
$b_[28]=$b28;
$b_[29]=$b29;
$b_[30]=$b30;
$b_[31]=$b31;
$b_[32]=$b32;
echo $b_[31];
}
?>
</head>
<body>
<?php
/**
* @author Medion
* @copyright 2007
*/
$fp = fopen("daten_01.txt","r");
while (!feof($fp)){
$text = fgets($fp,500);
$array = explode(" ",$text);
$d1=$array[0];
$d2=$array[1];
$d3=$array[2];
$d4=$array[3];
$d5=$array[4];
$d6=$array[5];
$d7=$array[6];
$d8=$array[7];
$d9=$array[8];
$d10=$array[9];
$d11=$array[10];
$d12=$array[11];
$d13=$array[12];
$d14=$array[13];
$d15=$array[14];
$d16=$array[15];
$d17=$array[16];
$d18=$array[17];
$d19=$array[18];
$d20=$array[19];
$d21=$array[20];
$d22=$array[21];
$d23=$array[22];
$d24=$array[23];
$d25=$array[24];
$d26=$array[25];
$d27=$array[26];
$d28=$array[27];
$d29=$array[28];
$d30=$array[29];
$d31=$array[30];
$d32=$array[31];
calendar($d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$d10,$d11,$d12,$d13,$d14,$d15,$d16,$d17,$d18,$d19,$d20, $d21,$d22,$d23,$d24,$d25,$d26,$d27,$d28,$d29,$d30,$d31,$d32);
}
fclose($fp);
?>
</body>
</html>
__________________
Danke und Grüße
|

04-11-2007, 01:54
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
Was du da machst ist Quatsch. Warum lässt du die Zeilen nicht in einem Array wie es sein soll und übergibst dieses an die Funktion?
|

04-11-2007, 09:06
|
|
Canonn
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 48
|
|
Hallo,
da hast Du wahrscheinlich Recht.
Möglicherweise wäre das Problem viel einfacher zu lösen. Hier muss ich noch üben..(wie man sieht, bin ein Anfänger)
Du meinst etwa so?
function xy (Array[0], Array[1], Array[2],...etc.)
Aber auch so müsste funktionieren. Frage ist, wieso geht es bis 31 Zeichen und bei Ergänzung auf 32 steigts aus.
Das kann ich mir nicht erklären.
Wenn ich 32 Zeichen auslesen könnte, wäre schon eine riesige Hilfe für mich.
__________________
Danke und Grüße
|

04-11-2007, 09:49
|
|
Rolandbar
Junior Member
|
|
Registriert seit: Mar 2004
Beiträge: 199
|
|
Was tontechniker meint ist das hier:
PHP-Code:
<html>
<head>
<title>Jahresüberblick</title>
<?php
function calendar($array)
{
echo $array[31];
}
?>
</head>
<body>
<?php
/**
* @author Medion
* @copyright 2007
*/
$fp = fopen("daten_01.txt","r");
while (!feof($fp))
{
$text = fgets($fp,500);
$array = explode(" ",$text);
calendar($array);
}
fclose($fp);
?>
</body>
</html>
__________________
Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg
|

04-11-2007, 10:11
|
|
Canonn
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 48
|
|
Hallo,
und genau das funktioniert nicht bzw. kann nicht funktionieren.
Wenn ich wie Du schreibst
calendar($array);
eingebe, liest mir die ganze 32 Zeichen aus. Also mehr als 31 Zeichen.
Wenn ich aber die Mühe mache und etwa so eingebe:
calendar( $array[0], $array[1], .........$array[31])
dann funktionierts.
und so funktioniert schon wieder nicht:
calendar( $array[0], $array[1], .........$array[32])
Also irgendwie hat es doch mit der Anzahl der Variablen zu tun??!!
__________________
Danke und Grüße
|

04-11-2007, 11:31
|
|
Rolandbar
Junior Member
|
|
Registriert seit: Mar 2004
Beiträge: 199
|
|
PHP-Code:
calendar( $array[0], $array[1], .........$array[32])
FALSCH!! Dass Array $array müsste 33 Elemente 0-32 haben. Du hast in deiner Textdatei aber nur 32 (0-31).
PHP-Code:
calendar( $array[0], $array[1], .........$array[31])
Das sind genau 32 Elemente. 0 Das Erste, 31 das Letzte der Zeile in der Textdatei(Buchstabe)
Zitat:
|
Also irgendwie hat es doch mit der Anzahl der Variablen zu tun??!!
|
Genau. $array[32] existiert gar nicht. Siehe Kommentar weiter oben.
Aufpassen: Arrays in Programmiersprachen fangen mit 0 (!) nicht mit 1 an.
ps: Dein Script in deinem Ersten Post geht bei mir ohne Probleme.
__________________
Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg
Geändert von Rolandbar (04-11-2007 um 11:37 Uhr)
|

04-11-2007, 12:19
|
|
Canonn
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 48
|
|
Du hast Recht,
und ich bin ein....
Ich sehe schon, habe falsche Daten übermittelt. SORRY mein Fehler.
Also:
calendar($array[0], $array[1], ......$array[30]);
das läuft.
calendar($array[0], $array[1], ......$array[31]);
das läuft nicht.
__________________
Danke und Grüße
|

04-11-2007, 12:21
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
Und jetzt übergibst du noch das ganze Array so wie Roland es in seinem ersten Post gezeigt hat. Dann kannst du auch alle Elemente durchlaufen und anzeigen, egal wie viele es sind.
|

04-11-2007, 12:25
|
|
Rolandbar
Junior Member
|
|
Registriert seit: Mar 2004
Beiträge: 199
|
|
Ich hätte beim Ersten Post schon schreiben sollen, dass du Bitte Das hier liest. Vor allem der Punkt "Der Fehler" ist wichtig.
__________________
Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg
|

04-11-2007, 12:27
|
|
Canonn
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 48
|
|
Rolandbar,
wenn Du sagst, bei Dir läufts..
Ich werde noch Wahnsinnig.... Wieso läufts bei mir nicht?!
__________________
Danke und Grüße
|

04-11-2007, 12:45
|
|
Rolandbar
Junior Member
|
|
Registriert seit: Mar 2004
Beiträge: 199
|
|
Schreibe doch bitte was bei dir nicht geht. Keine Ausgabe? Fehler von PHP? Falsche Ausgabe?
Die Ausgabe bei mir war:
1 2 1 1 2 1 1 1 2 1 1 1
Oder wenn ich beim Script im Ersten Post, bei der Funktion Calendar das echo $b_[31]; in echo $b_[32]; mache:
A B C D E F G H I J K L
Schreibe doch mal, mit welcher PHP Version du Testest. 5.2.4 bei mir
mfg Roland
__________________
Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg
|

04-11-2007, 14:57
|
|
Canonn
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 48
|
|
Hallo,
da ist mein Gesamtskript erneut:
code:
PHP-Code:
html>
<head>
<title>Jahresüberblick</title>
<?php
function calendar($b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$b10,$b11,$b12,$b13,$b14,
$b15,$b16,$b17,$b18,$b19,$b20,$b21,$b22,$b23,$b24,$b25,$b26,
$b27,$b28,$b29,$b30,$b31)
{
$b_[1]=$b1;
$b_[2]=$b2;
$b_[3]=$b3;
$b_[4]=$b4;
$b_[5]=$b5;
$b_[6]=$b6;
$b_[7]=$b7;
$b_[8]=$b8;
$b_[9]=$b9;
$b_[10]=$b10;
$b_[11]=$b11;
$b_[12]=$b12;
$b_[13]=$b13;
$b_[14]=$b14;
$b_[15]=$b15;
$b_[16]=$b16;
$b_[17]=$b17;
$b_[18]=$b18;
$b_[19]=$b19;
$b_[20]=$b20;
$b_[21]=$b21;
$b_[22]=$b22;
$b_[23]=$b23;
$b_[24]=$b24;
$b_[25]=$b25;
$b_[26]=$b26;
$b_[27]=$b27;
$b_[28]=$b28;
$b_[29]=$b29;
$b_[30]=$b30;
$b_[31]=$b31;
/*$b_[32]=$b32;*/
echo $b_[31];
}
?>
</head>
<body>
<?php
/**
* @author Medion
* @copyright 2007
*/
$fp = fopen("daten_01.txt","r");
while (!feof($fp)){
$text = fgets($fp,500);
$array = explode(" ",$text);
calendar($array[0],$array[1],$array[2],$array[3],$array[4],$array[5],
$array[6],$array[7],$array[8],$array[9],$array[10],$array[11],$array[12],
$array[13],$array[14],$array[15],$array[16],$array[17],$array[18],
$array[19],$array[20],$array[21],$array[22],$array[23],$array[24],
$array[25],$array[26],$array[27],$array[28],$array[29],$array[30]);
}
fclose($fp);
?>
</body>
</html>
und nur so funktionierts.
So bald ich beim Funktionsaufruf die Liste mit $array[31] ergänze und
im function calendar (..) die Liste mit $b32 ergänze und in dem Function selbst dementsprechend $b_[32]=$b32;
einsetze (muss ja sein) dann scheiterts bereits beim Fuktionsaufruf.
Ich habe, meines Wissens PHP 5 installiert oder zumindest ab PHP5.
Die Fehlermeldung lautet:
undefined offset in line 75 (Funktionsaufrufszeile) bezogen auf der gesamte Variablenliste in der Funktionsaufrufszeile.
Dieser Fehlermeldung verschwindet sofort so bald ich nur 31 Zeichen auslese.
__________________
Danke und Grüße
Geändert von asp2php (04-11-2007 um 23:06 Uhr)
|

04-11-2007, 15:20
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
kannst du dich bitte mal endlich von diesem Scheiß hier verabschieden. Wie oft möchtest du das noch gesagt bekommen???
PHP-Code:
function calendar($b1,$b2,$b3,$b4,$b5,$b6,$b7,$b8,$b9,$b10,$b11,$b12,$b13,$b14,
$b15,$b16,$b17,$b18,$b19,$b20,$b21,$b22,$b23,$b24,$b25,$b26,
$b27,$b28,$b29,$b30,$b31)
{
$b_[1]=$b1;
$b_[2]=$b2;
$b_[3]=$b3;
$b_[4]=$b4;
$b_[5]=$b5;
$b_[6]=$b6;
$b_[7]=$b7;
$b_[8]=$b8;
$b_[9]=$b9;
$b_[10]=$b10;
$b_[11]=$b11;
$b_[12]=$b12;
$b_[13]=$b13;
$b_[14]=$b14;
$b_[15]=$b15;
$b_[16]=$b16;
$b_[17]=$b17;
$b_[18]=$b18;
$b_[19]=$b19;
$b_[20]=$b20;
$b_[21]=$b21;
$b_[22]=$b22;
$b_[23]=$b23;
$b_[24]=$b24;
$b_[25]=$b25;
$b_[26]=$b26;
$b_[27]=$b27;
$b_[28]=$b28;
$b_[29]=$b29;
$b_[30]=$b30;
$b_[31]=$b31;
|

04-11-2007, 15:48
|
|
Rolandbar
Junior Member
|
|
Registriert seit: Mar 2004
Beiträge: 199
|
|
Bitte Code umbrechen.
undefined offset komisch... Ich glaube den Index 31 gibt es nicht.
Setze mal folgenden Code VOR den Funktionsaufruf:
PHP-Code:
echo '<pre>';
print_r($array);
echo '</pre>';
In der Ausgabe kannst du dann sehen wie gross die Arrays in jedem Schleifendurchlauf waren.
__________________
Onlie Browsergame: http://www.war-of-empire.de <-- 2. Weltkrieg
|

04-11-2007, 18:45
|
|
tontechniker
PHP Senior
|
|
Registriert seit: Jul 2005
Beiträge: 1.972
|
|
Natürlich gibt es das Offset nicht, die Datei hat halt nur 32 Zeilen ... und nochmal:
Zitat:
|
kannst du dich bitte mal endlich von diesem Scheiß hier verabschieden. Wie oft möchtest du das noch gesagt bekommen???
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|