22.10.2021 14:05
1
Zdravím,
mám zde tento PHP kod:

PHP kód:
    
$vypis_polozek_array
[] = array(
    'nazev1' => "test"
    'nazev2' => "test2"
 
  );  

foreach ($vypis_polozek_array as $info){

 echo 
addslashes($info['nazev1']);

}
//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:38
2
PHP kód:
$vypis_polozek_array = [
    
'nazev1' => "test",
    
'nazev2' => "test2"
 ];  
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:39
3
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:43
4
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:52
5
Původně odeslal sentosa
PHP kód:
$vypis_polozek_array = [
    'nazev1' => "test",
    'nazev2' => "test2"
 ];  
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):

PHP kód:

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 15:02
6
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.

PHP kód:
$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

PHP kód:
$vypis_polozek_array[] = [
      
'nazev_kategorie' => "$polozka"
]; 
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:03
7
víš mimochodem, že pokud máš v $url nějakou adresu, php to samo nenačte?
22.10.2021 16:14
8
Původně odeslal TomášX
víš mimochodem, že pokud máš v $url nějakou adresu, php to samo nenačte?
Vložení:
PHP kód:
$vypis_polozek_array = array(); 
před kódem celou situaci vyřešilo :) díky moc.
30.10.2021 13:31
9
Původně odeslal Sashaa
Zdravím,
mám zde tento PHP kod:

PHP kód:
    
$vypis_polozek_array
[] = array(
    'nazev1' => "test"
    'nazev2' => "test2"
 
  );  

foreach ($vypis_polozek_array as $info){

 echo 
addslashes($info['nazev1']);

}
//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...
PHP kód:
foreach ($vypis_polozek_array as $nazev => $hodnota) {
    echo htmlspecialchars($nazev) . ': ' htmlspecialchars($hodnota) . "<br>\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…
PHP kód:
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".