Warning: Creating default object from empty value

Tags:    php

Mit website har hidtil fungeret med bl.a. dette statement:
$param = array();
$param[0]->command = 0;

Men nu kommer der pludselig en warning med:

Creating default object from empty value

som peger på netop denne linie.

Det skyldes formentlig, at der er sket en opdatering af php hos Unoeuro.com, men hvad skal jeg gøre, for at undgå denne warning?
Jeg har prøvet at indsætte dette:
$param = new stdClass();

Forhåbentlig har nogen en løsning:-)

Venlig hilsen
Bjarne Hansen




5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Tror ikke helt du forstår.

Fold kodeboks ind/udPHP kode 


betyder at $sprognavne nu er et array med ét element, det er grundlæggende det samme som:

Fold kodeboks ind/udPHP kode 


Så når du laver:
Fold kodeboks ind/udPHP kode 


prøver du at sætte sprognavn og sprogkode på et plads i arrayet som er tomt ... nemlig $n->sprogkode. Det du skal gøre er:

Fold kodeboks ind/udPHP kode 


Eller endnu bedre kunne du bare gøre:
Fold kodeboks ind/udPHP kode 





Indlæg senest redigeret d. 11.02.2015 10:24 af Bruger #17081
Problemet er at du prøve at sætte command på et objekt der ikke findes, hvilket PHP tillader. Mit gæt er at det har skabt problemer mange steder fordi det typisk ikke er hensigten, men i stedet en programmørfejl.

Det er ikke $param den giver advarslen over, men $param[0] som ikke findes. For at fixe det kan du sørge for objektet allerede eksisterer før du sætter command:

Fold kodeboks ind/udPHP kode 





Hvis det er fordi du vil bruge et array, skal du skrive det sådan her:
Fold kodeboks ind/udPHP kode 




Tusind tak, det hjalp på $param.
Når jeg bruger samme metodik på

$sprognavne = array();
$sprognavne[] = new stdClass();
foreach ($navne AS $n)
{
$sprognavne[$n->sprogkode]->sprogkode = $n->sprogkode;
$sprognavne[$n->sprogkode]->sprognavn = $n->sprognavn;
}

så får jeg også

Creating default object from empty value

$sprognavne skal åbenbart initieres på en anden måde - eller hvad?

Bjarne Hansen



Utrolig flot - tusind tak for hjælpen ;-)



t