Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PHP Notice: Undefined offset: 1

2 views
Skip to first unread message

Svein Hovlandsdal

unread,
Mar 20, 2008, 12:35:54 PM3/20/08
to
Midt i påskeferien - men kanskje noen kikker innom likevel?

Har en kodebit som i dette tilfelle finner siste oppdaterte tekstfil i en
mappe ( med undermapper! )
Koden fungerer helt som den skal, men får altså "PHP Notice: Undefined
offset: 1 in... on line 6"
Feilmeldingen kommer 2 ganger pr kjøring, og har vel sammenheng med at den
finner "mappe1" og "undermappe1" som ikke inneholder "." og dermed ikke kan
splittes i "$name" og "$ext".. tror jeg da...
Men jeg finner ikke ut hvordan jeg kan "komme rundt" den! Noen forslag?


function mostRecentModifiedFileTime($dirName,$doRecursive) {
global $newest, $newest_artist;
$d = dir($dirName);
$lastModified = 0;
while($entry = $d->read()) {

linjen som gir feil:
list($name,$ext) = split("\.", $entry,2);

if ($entry != "." && $entry != ".." && $ext != "m3u" && $ext !=
"jpg" && $ext != "txt" && $ext != "php" && $ext = "mp3") {
if (!is_dir($dirName."/".$entry)) {
clearstatcache('fileatime');
$currentModified = filemtime($dirName."/".$entry);
} else if ($doRecursive && is_dir($dirName."/".$entry)) {
$currentModified =
mostRecentModifiedFileTime($dirName."/".$entry,true);
}
if ($currentModified > $lastModified){
$lastModified = $currentModified;
}
}
if ($lastModified > $newest ){
$newest = $lastModified;
$newest_artist = $dirName."/".$entry;
}
}
$d->close();
return $lastModified;

}

mvh
Svein Hovlandsdal


Joachim Mæland

unread,
Mar 20, 2008, 6:34:22 PM3/20/08
to
On Thu, 20 Mar 2008 17:35:54 +0100, Svein Hovlandsdal wrote:

> Koden fungerer helt som den skal, men får altså "PHP Notice: Undefined
> offset: 1 in... on line 6"
> Feilmeldingen kommer 2 ganger pr kjøring, og har vel sammenheng med at
> den finner "mappe1" og "undermappe1" som ikke inneholder "." og dermed
> ikke kan splittes i "$name" og "$ext".. tror jeg da... Men jeg finner
> ikke ut hvordan jeg kan "komme rundt" den! Noen forslag?

Det høres nesten ut som om du har satt loglevel bedre egnet for debugging
enn produksjon.

Sjekk "error_reporting" i php.ini.

--
Regards/mvh Joachim Mæland

If everything seems under control, you're just not going fast enough.
-Mario Andretti

Svein Hovlandsdal

unread,
Mar 20, 2008, 7:06:34 PM3/20/08
to
"Joachim Mæland" <jm-...@profine.net> skrev i melding
news:64g73dF...@mid.individual.net...

> Det høres nesten ut som om du har satt loglevel bedre egnet for debugging
> enn produksjon.
>
> Sjekk "error_reporting" i php.ini.

Sorry, skulle jo ha sagt det - men det er debugging jeg driver med for
øyeblikket, prøver å få vekk flest mulige feil...

mvh

Svein


Joachim Mæland

unread,
Mar 21, 2008, 2:07:53 AM3/21/08
to
On Fri, 21 Mar 2008 00:06:34 +0100, Svein Hovlandsdal wrote:

> Sorry, skulle jo ha sagt det - men det er debugging jeg driver med for
> øyeblikket, prøver å få vekk flest mulige feil...

;-)

Du kan sjekke innholdet i $entry, slik at du bare benytter split() når
denne ikke vil feile. Pass bare på at du ikke introduserer hull som
enkeltfiler kan ramle ned i. Vet f.eks. ikke hvor relevant det er med
filnavn på 1 karakter, uten extension, skjulte filer osv...

Dersom du fortløpende skriver innholdet av $entry, vil det være svært
enkelt å se nøyaktig hva som trigger "feil"-meldingen.

Svein Hovlandsdal

unread,
Mar 21, 2008, 6:12:57 PM3/21/08
to
"Joachim Mæland" <jm-...@profine.net> skrev i melding
news:64h1lpF...@mid.individual.net...

> Dersom du fortløpende skriver innholdet av $entry, vil det være svært
> enkelt å se nøyaktig hva som trigger "feil"-meldingen.

På en måte var det det jeg gjorde, og feilen var egentlig at den fant "." og
".." før jeg trodde den skulle finne dem! ( en liten glipp der!-)
Løsningen ble likevel en omskrivning av koden - som ble slik til slutt:
(hvis noen er intressert i den da..)
---------------------------------------------------------

function mostRecentModifiedFileTime($dirName, $doRecursive = true) {
global $newest, $newest_artist;

$d = dir($dirName);
$lastModified = 0;

$currentModified = 0;

while($entry = $d->read()) {
if ($entry == '.' || $entry == '..') {
continue;
}

if (!is_dir($dirName . '/' . $entry)) {
list($name, $ext) = split('\.', $entry, 2);
if ($ext == 'mp3') {
clearstatcache();
$currentModified = filemtime($dirName . '/' . $entry);
}
} else {
$currentModified = mostRecentModifiedFileTime($dirName . '/' . $entry);
}

$lastModified = max($lastModified, $currentModified);

if ($lastModified > $newest ){
$newest = $lastModified;
$newest_artist = $dirName."/".$entry;
}
}
$d->close();
return $lastModified;
}

mvh: Svein Hovlandsdal
"som dagene går" -> hovlandsdal.com

0 new messages