Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PHP: "Undefined Index" loswerden (https://www.delphipraxis.net/49252-php-undefined-index-loswerden.html)

alcaeus 7. Jul 2005 23:48


PHP: "Undefined Index" loswerden
 
Hallo ihr,

zum Testen meiner Seite verwende ich in PHP error_reporting(E_ALL), um eventuelle nicht initialisierte Variablen zu entdecken.
Nun habe ich das Problem, dass in einer Datei ein leeres array deklariert wird, welches erst spaeter gefuellt:
Code:
$foo = array();
$bar = array();
//$bar wird zweidimensional gefuellt, erster Index = Zeilennummer, zweiter Index = Spaltenname

for ($i = 0; $i < count($bar); $i++)
{
  $forum_id = $bar[$i]['forum_id'];
  $foo[$forum_id] = 0;
}
Natuerlich spuckt mir PHP bei dieser Verwendung immer einen Hinweis, dass der Index (also die Foren-ID) nicht vorhanden ist. Ok, E_ALL ist vielleicht etwas zu extrem, allerdings interessiere ich mich dafuer, ob es eine Moeglichkeit gibt, dies zu verhindern. Da die IDs aus der Datenbank kommen, kann ich beim Initialisieren des Arrays noch nicht wissen, welche Foren-IDs vorhanden sind. Weiss jemand Abhilfe? Falls es jemand testen will: phpBB, includes/auth.php, die Schleife die in Zeile 234 beginnt:
Code:
for ($k = 0; $k < count($f_access); $k++)
Nur falls sich jemand die Muehe machen will, es selbst zu probieren ;)

Greetz
alcaeus

Aenogym 8. Jul 2005 00:53

Re: PHP: "Undefined Index" loswerden
 
moin andreas,

das lässt mir jetzt irgendwie keine ruhe :) ich hab zwar kein phpBB hier, aber wollte es trotzdem mal versuchen:

Code:
<?php
error_reporting(E_ALL);

$foo = array();
$bar = array();
//$bar wird zweidimensional gefuellt, erster Index = Zeilennummer, zweiter Index = Spaltenname

$bar[0]['forum_id'] = 0;
$bar[0]['test'] = "hallo";
$bar[1]['forum_id'] = 1;
$bar[1]['test'] = "moin";
$bar[2]['forum_id'] = 2;
$bar[2]['test'] = "huhu";
$bar[3]['forum_id'] = 3;
$bar[3]['test'] = "tach";

for ($i = 0; $i < count($bar); $i++)
{
  $forum_id = $bar[$i]['forum_id'];
  $foo[$forum_id] = 0;
}

print_r($foo);
print_r($bar);

?>
ich bekomme keine notice von php. das liegt warscheinlich an meiner "von-hand-ausfüllung", sehe ich das richtig? sprich: ich habe in zeile 8 bis 15 die indizes schon vorgegeben, also kein fehler. wenn die aus deiner datenbank kommen, kennt php die noch nicht und wirft einen fehler aus. auch richtig?
wenn ja, könntest du $bar nach dem füllen aus der datenbank doch per hand die 'forum_id' zuweisen.

(sorry, falls ich das jetzt falsch vertsanden habe, aber ich hab dne phpBB source nicht...)

aenogym

alcaeus 8. Jul 2005 08:55

Re: PHP: "Undefined Index" loswerden
 
Moin Aeno,

ja, das Beispiel hier war nur eine Demo. Was ich uebersehen hatte, nervt mich jetzt noch mehr: fast am Ende der Zeile (die bei 1024x768 halb versteckt ist) wird noch ein array verwendet, und dort ist dieser Index nicht definiert :wall:
Ich werde dann mal sehn woher das Ding kommt, und evtl. mit Default-Werten fuellen. Falls noch jemand einen Vorschlag hat, nur her damit ;)

Greetz
alcaeus

Daniel 8. Jul 2005 08:58

Re: PHP: "Undefined Index" loswerden
 
Mit der Funktion "isset()" kannst Du vorher prüfen, ob ein Index gesetzt ist.

alcaeus 8. Jul 2005 09:01

Re: PHP: "Undefined Index" loswerden
 
Hallo Daniel,

Zitat:

Zitat von Daniel
Mit der Funktion "isset()" kannst Du vorher prüfen, ob ein Index gesetzt ist.

das wusste ich schon, allerdings kommt es mir fuer den Moment ein bisschen umstaendlich vor, jeden einzelnen Index zu pruefen und evtl. auf 0 zusetzen bevor er in die Schleife wandert. Ansonsten lass ich die Notices in auth.php drin...phpBB ist sowieso voll davon :wall:

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz