[PHP] PHP 4.1.1 trouble met variabelen

Pagina: 1
Acties:

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Hoi,

PHP 4.1.1 blijft bestoken met vage meldingen over variabelen die niet gedefineerd zijn.

Bij het volgende stukje code dat alle files in een bepaalde directory in een array leest krijg ik vage Warnings.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function GetDirArray($sPath)
{
    //Load Directory Into Array
    $handle = opendir($sPath);
    while ($file = readdir($handle)) {
        // Controleer extensie
        $filename_len = strlen($file);
        $extension = strtoupper(substr($file, $filename_len - 4, 4));
        if ($file != '.' && $file != '..' && $extension != '.INI') {
          $retVal[count($retVal)] = $file;
        }
    }
    
    //Clean up
    closedir($handle);
    if (isset($retVal)) {
        return $retVal;
    else
        return '';
}

Nu krijg ik de volgende fout:
Warning: Undefined variable: retVal in \phplib\file.php3 on line 89

Ik had al begrepen dat PHP 4.1.1 strenger is met niet geinitialiseerde variabelen.
Dat is op zich terecht en ik wil mijn code gewoon zonder Warnings laten werken.
Maar ik kan toch echt niet de fout vinden in deze routine.
Op het einde controleer ik namelijk of $retVal is gezet.
Ik had ook al geprobeerd in het begin van mijn routine $retVal = '';
te plaatsen, maar dat hielp niet
Wat is hier dan fout aan :?

It’s nice to be important but it’s more important to be nice


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

code:
1
$retVal[count($retVal)]

Daar gaat het mis :)
De eerste keer dat je dat doet bestaat $retVal nog niet lijkt me.

Even initialiseren op $retVal = array();

en je controle veranderen in iets als if(empty($retVal))

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op zaterdag 26 januari 2002 12:34 schreef JonkieXL het volgende:
Bij het volgende stukje code dat alle files in een bepaalde directory in een array leest krijg ik vage Warnings.
code:
1
2
3
4
5
6
7
          $retVal[count($retVal)] = $file;
[..]
    if (isset($retVal)) {
        return $retVal;
    else
        return '';
}
Je doet hier count($retVal). Maar $retVal is hier nog niet gedefineerd, dus krijg je hier een warning. Is dit trouwens ook regel 89?

edit: ACM was sneller...

Je kan dit oplossen door een ifconstructie.
Of een .. ? .. : ..-constructie, maar dat kan onoverzichtelijk zijn.

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Op zaterdag 26 januari 2002 12:36 schreef ACM het volgende:
code:
1
$retVal[count($retVal)]

Daar gaat het mis :)
De eerste keer dat je dat doet bestaat $retVal nog niet lijkt me.

Even initialiseren op $retVal = array();

en je controle veranderen in iets als if(empty($retVal))
Ja heb je wel gelijk in.
In het begin van de routine de array $retVal initialiseren helpt wel.
Ik had namelijk problemen met m'n cache. Ik had mijn routine gewijzigd maar de eigenwijze IE had nog een oude versie in z'n cache staan |:(

It’s nice to be important but it’s more important to be nice