Ik heb de volgende code:
Nu krijg ik in windows (Apache en PHP 4.3.11) de volgende foutmelding:
Warning: Invalid argument supplied for foreach() in c:\htdocs\temp\array.php on line 24
Terwijl als ik diezelfde code op mijn Debian Testing machine (php 4.3.10-15) uitvoer, GEEN foutmelding krijg.
Ik ging er eigenlijk vanuit dat als $res een NULL-value had, dat foreach dan GEEN foutmelding moet geven.
Is dit nu een bug in de Win32 port van PHP?
De reden van deze post is eigenlijk deze code:
Waarin ik nu de is_null-controle heb toegevoegd (if (!is_null($res))) zodat PHP geen warning geeft op mijn W2K-machine.
PHP:
1
2
3
4
5
| $res = NULL; foreach ($res as $key => $value) { echo $key . "<br />"; } |
Nu krijg ik in windows (Apache en PHP 4.3.11) de volgende foutmelding:
Warning: Invalid argument supplied for foreach() in c:\htdocs\temp\array.php on line 24
Terwijl als ik diezelfde code op mijn Debian Testing machine (php 4.3.10-15) uitvoer, GEEN foutmelding krijg.
Ik ging er eigenlijk vanuit dat als $res een NULL-value had, dat foreach dan GEEN foutmelding moet geven.
Is dit nu een bug in de Win32 port van PHP?
De reden van deze post is eigenlijk deze code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| function &GetSingleRow($function, $query, $data=null) { if (!isset($this->dbh) || !is_object($this->dbh)) $this->openDatabase(); if (DB::iserror($this->dbh)) { $this->handle_error($this->dbh, $function); return; } $res =& $this->dbh->getRow($query, $data); if (DB::iserror($this->dbh)) { $this->handle_error($this->dbh, $function); return; } if (DB::iserror($res)) { $this->handle_error($res, $function); return; } if (!is_null($res)) { foreach ($res as $key => $value) { $res[$key] = stripslashes($value); } } return $res; } |
Waarin ik nu de is_null-controle heb toegevoegd (if (!is_null($res))) zodat PHP geen warning geeft op mijn W2K-machine.