Autor Zpráva
Amunak
Profil
Zdravím, tento skript nehlásí žádnou chybu, ale...
$pole = array();
var_dump($pole); //vypíše array(0){} - OK

function fce() {
    global $pole;
var_dump($pole); //vypíše NULL - Jakto?
}


Kód je součástí skriptu který sice includuji, ale ne dovnitř jiné funkce (myslím) :-D

co s tím?
pcmanik
Profil
Ty definujes tu globalnu premmenu az vo funkcii, resp. ty musis do tej funkcie vlozit ten array, od toho su parametre funkcii. Ved takto by si mohol omylom napisat do globalu nejaku premennu, co sa ti vyskytuje niekde v skripte a mal by si problemy.
Amunak
Profil
pcmanik:
Ale já to tak potřebuji. Potřebuji to pole měnit a využívat ve větším počtu funkcí. Nemůžu použít parametry, protože nechci pokaždé vypisovat parametr navíc, který by byl stejně použit jako referenční.
meris
Profil
Existuje to pole před tím, než zavoláš tu funkci?
Amunak
Profil
meris:
ano, viz první var_dump. Ta funkce se volá v nadřazeném skriptu, který tento includuje.
Keeehi
Profil
1) Funkci nevoláš. Když ji zavolám, tak to bez problémů funguje.
2) Udělal bych to asi takto:
function fce(&$pole) {
    $pole[2]=5;
}

$pole = array(1,2,3,4,5);

var_dump($pole); //1,2,3,4,5
fce($pole);
var_dump($pole); //1,2,5,4,5
Amunak
Profil
Keeehi:
u sebe jí volám...

Takhle je to hezké, ale když to chci bez použití parametru?
Keeehi
Profil
V [#1] chyba není. Když si vyzkoušíte tento očesaný příklad, musí vám fungovat, tzn. že chyba bude v té části, kterou jste sem nedal.
Amunak
Profil
Keeehi:
Asi máte pravdu, zítra to ještě projdu a kdyžtak to sem dám celé.
meris
Profil
Amunak:
Myslel jsem co vypíše var_dump těsně před voláním té funkce? Špatně jsem to napsal před tím.
Amunak
Profil
Před voláním to pole taky bylo naplněné. U mě nefungovala ani tahle ukázka, takže asi nějaké podivné nastavení php nebo špatná konstelace hvězd. Přenesl jsem to nakonec přes ten parametr, takže jsem toho teď půlku přepsal ale zase ta funkce je teď o něco praktičtější.

Tak díky za snahu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: