Zadejte hledaný výraz...

Chyba při čteni PHP funkce

Sashaa
verified
rating uzivatele
(18 hodnocení)
22. 10. 2021 14:05:02
Zdravím,
mám zde tento PHP kod:
   
$vypis_polozek_array[] = array(
    'nazev1' => "test",
    'nazev2' => "test2"
  ); 
foreach ($vypis_polozek_array as $info){
echo addslashes($info);
}//ukončení foreach
a hází mi to chybu, že to nemůže přečíst: Undefined variable: vypis_polozek_array
nevíte čím by to mohlo být?
22. 10. 2021 14:05:02
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492489
sentosa
verified
rating uzivatele
(1 hodnocení)
22. 10. 2021 14:38:00
$vypis_polozek_array = ; 
umaz [] - hazi to chybu, protoze tvojim zpusobem chces do pole $vypis_polozek_array neco pridat, jenze to nemas definovany. musel by si nad to definovat pole $vypis_polozek_array = [];, ale mel by si pak pole, ve kterem az je to tvoje pole
jinak zapis array(...) je zastaraly, lze nahradit
22. 10. 2021 14:38:00
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492488
TomasX
verified
rating uzivatele
(4 hodnocení)
22. 10. 2021 14:39:40
a jsi si jistý, že tam nemáš u sebe překlep? Tenhle kód totiž funguje správně, pokud ho odsud vykopíruji.
K čemu tam používáš to addslashes?
22. 10. 2021 14:39:40
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492487
TomasX
verified
rating uzivatele
(4 hodnocení)
22. 10. 2021 14:43:29
sentosa: Co to povídáš? :) Zápis $vypis_polozek_array[] = Array() vede k implicitní deklaraci proměnné vypis_polozek_array, jak je v php zvykem, tahle konstrukce ti bude fungovat v každé verzi od php 4.0.0 (jestli to funguje i ve starších si moje hlava již nepamatuje). Stejně tak zápis Array() proti [] není nikterak zastaralý, není ani deprecated, je to prostě je jiná alternativa pro zápis toho stejného.
22. 10. 2021 14:43:29
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492486
Sashaa
verified
rating uzivatele
(18 hodnocení)
22. 10. 2021 14:52:15
Napsal sentosa;1633330
$vypis_polozek_array = ; 
umaz [] - hazi to chybu, protoze tvojim zpusobem chces do pole $vypis_polozek_array neco pridat, jenze to nemas definovany. musel by si nad to definovat pole $vypis_polozek_array = [];, ale mel by si pak pole, ve kterem az je to tvoje pole
jinak zapis array(...) je zastaraly, lze nahradit
Při nahrazení [] misto array () hází chybu: Illegal string offset 'nazev1' 
Jinak zde vyzkoušel jsem to zvlášť můj původní kód a funguje to, ale jakmile jej aplikuji do souboru, kde má být, tak to nefunguje... zde je stručný výpis, kde se ten array vlastně nachází (mezi foreach):
foreach($odkazy as $url){
$test = $url;// je to jen na ukazku, v kodu mam jine obsahy
foreach ($test as $polozka) {
$vypis_polozek_array[] = array(
'nazev_kategorie' => "$polozka"
);
}
}
echo $vypis_polozek_array;//nenalezeno... ani bez [] před array
22. 10. 2021 14:52:15
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492485
TomasX
verified
rating uzivatele
(4 hodnocení)
22. 10. 2021 15:02:23
to už je lepší, v tom případě je proměnná $url nebo $polozka prázdná, foreach neproběhne ani jednou a proměnná se tedy ani nevytvoří. Dobrým zvykem je proměnné pro tyhle případy explicitně deklarovat na začátku, vyhneš se tak i chybám, kdy použiješ v jiné části kódu stejnojemnnou proměnnou, tj.
$vypis_polozek_array = array();
foreach($odkazy as $url){
$test = $url;
foreach ($test as $polozka) {
$vypis_polozek_array[] = array(
'nazev_kategorie' => "$polozka"
);
}
}
var_dump($vypis_polozek_array);
Vypis_polozek_array je pole, pokud ho vypisuješ, nepoužívej echo, to ti toho moc nevrátí, ale např. var_dump, ten ti zobrazí celý obsah. sentosa měl na mysli nahrazení té funkce array, tj. zapsání jako
$vypis_polozek_array[] = ;
Osobně v tom ale nevidím problém, dají se použít obě varianty, jen to drž konzistentně napříč jedním projektem, ať to nemate.
22. 10. 2021 15:02:23
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492484
TomasX
verified
rating uzivatele
(4 hodnocení)
22. 10. 2021 15:03:22
víš mimochodem, že pokud máš v $url nějakou adresu, php to samo nenačte?
22. 10. 2021 15:03:22
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492483
Sashaa
verified
rating uzivatele
(18 hodnocení)
22. 10. 2021 16:14:41
Napsal TomášX;1633336
víš mimochodem, že pokud máš v $url nějakou adresu, php to samo nenačte?
Vložení:
$vypis_polozek_array = array();
před kódem celou situaci vyřešilo :) díky moc.
22. 10. 2021 16:14:41
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492482
crs
verified
rating uzivatele
(1 hodnocení)
30. 10. 2021 13:31:53
Napsal Sashaa;1633329
Zdravím,
mám zde tento PHP kod:
   
$vypis_polozek_array[] = array(
    'nazev1' => "test",
    'nazev2' => "test2"
  ); 
foreach ($vypis_polozek_array as $info){
echo addslashes($info);
}//ukončení foreach
a hází mi to chybu, že to nemůže přečíst: Undefined variable: vypis_polozek_array
nevíte čím by to mohlo být?
- na prvním řádku, u deklarace vyhoď "[]". Asi jsi přemýšlel v intencích Céčkaře, ale v PHP to tak není.
- nejsem si jist, že to, co v kódu píšeš, udělá to, co zamýšlíš. Pro vypsání prvků pole doporučuji něco jako...
foreach ($vypis_polozek_array as $nazev => $hodnota) {
    echo htmlspecialchars($nazev) . ': ' . htmlspecialchars($hodnota) . "
n";
}
popřípadě pro každý index pole ("název" podle tvého pojmenování) vypsat hodnotu tvým způsobem (pak lze v těle foreach použít…
switch($nazev) {
    case "nazev1":
        echo htmlspecialchars($hodnota);
        break;
    case "nazev2":
        echo ($hodnota * 100) . ' %'; //například
        break;
    // ...
}
Pokud $vypis_polozek_array chceš vypsat uvnitř funkce, musíš hodnotu proměnné buď předat jako parametr nebo převzít přes klauzuli "global".
30. 10. 2021 13:31:53
https://webtrh.cz/diskuse/chyba-pri-cteni-php-funkce#reply1492481
Pro odpověď se přihlašte.
Přihlásit