Autor | Zpráva | ||
---|---|---|---|
janky Profil |
Dobrý den, používám dibi. Z databáze předám do funkce jedno nebo více polí v poli. Chtěl bych je zpracovat, pokud je polí více vypsat vícekrát ul seznam.
Foreach mi vrací Notice: Undefined variable: card_face in D:\www\mtg_card_price\includes\functions.php on line 386 Notice: Trying to access array offset on value of type null in D:\www\mtg_card_price\includes\functions.php on line 386 function get_card_text($card_arr) { $out = ""; foreach ($card_arr as $card) { $out = '<ul class="list-group mb-3 shadow-sm">'; foreach ($card as $face) { $out .= '<li class="list-group-item"><b>'.$face['face_name'].'</b></li>'; $out .= '<li class="list-group-item">'.$face['face_type_line'].'</li>'; if($face['face_oracle_text']) { $out .= '<li class="list-group-item">'.nl2br($face['face_oracle_text']).'</li>'; }; if($face['face_flavor_text']) { $out .= '<li class="list-group-item"><i>'.$face['face_flavor_text'].'</i></li>'; }; if($face['face_loyalty']) { $out .= '<li class="list-group-item">Loyalty: '.$face['face_loyalty'].'</li>'; }; if($face['face_power']) { $out .= '<li class="list-group-item">'.$face['face_power'].' / '.$face['face_toughness'].'</li>'; }; $out .= '</ul>'; }; $out .= '</ul>'; } return $out; }; var_dump($face) mi vrátí hodnoty bez klíčů. |
||
Taps Profil |
#2 · Zasláno: 3. 11. 2020, 19:06:42
Bohužel nevím, co je na řádku 386. Bez věčí ucelenosti kódu, zřejmě nebude schopni pomoci.
|
||
anonym_ Profil * |
#3 · Zasláno: 3. 11. 2020, 19:25:12
janky:
Undefined variable: card_face. V uvedeném kódu ale žádná taková proměnná není. A jak tu chybu odstranit? Zadefinovat proměnnou, zkontrolovat scope... |
||
janky Profil |
Notice: Undefined variable: card_face in D:\www\mtg_card_price\includes\functions.php on line 386 tuto chybu jsem již odstranil. Každopádně pořád ten kód nefunguje. Po odstranění problému s proměnou card_face. Mám tyto chyby: pastebin.com/vQdztzGt
ve zkratce to vypadá že pro každou hodnotu kterou chci získat z pole dostanu Warning: Illegal string offset 'face_name' in D:\www\mtg_card_price\includes\functions.php on line 386 na řádku 386 je řádek 11 z výše uvedené funkce $out .= '<li class="list-group-item"><b>'.$face['face_name'].'</b></li>'; Pole které předávám do funkce (z var_dump) pastebin.com/ejesytzA |
||
anonym_ Profil * |
#5 · Zasláno: 3. 11. 2020, 20:36:06
janky:
Tak vzhkedem k tomu, ze jde o objekt a ne pole, tak -> namísto hranatých závorek, ze? |
||
janky Profil |
Když zaměním -> za hranate zavorky dostanu
Notice: Trying to get property 'face_name' of non-object in D:\www\mtg_card_price\includes\functions.php on line 386 Edit: Ještě doplním takto vypadá var_dump($face) v druhém foreach pastebin.com/WsGTEZ3v Vypadá to jako hodnoty z pole bez klíčů. Edit: Zkouším na to jít jinak udělal jsem si jen 1 foreach function get_card_text($card_arr) { $out = ""; foreach ($card_arr as $face) { $out = '<ul class="list-group mb-3 shadow-sm">'; $out .= '<li class="list-group-item"><b>'.$face['face_name'].'</b></li>'; $out .= '<li class="list-group-item">'.$face['face_type_line'].'</li>'; if($face['face_oracle_text']) { $out .= '<li class="list-group-item">'.nl2br($face['face_oracle_text']).'</li>'; }; if($face['face_flavor_text']) { $out .= '<li class="list-group-item"><i>'.$face['face_flavor_text'].'</i></li>'; }; if($face['face_loyalty']) { $out .= '<li class="list-group-item">Loyalty: '.$face['face_loyalty'].'</li>'; }; if($face['face_power']) { $out .= '<li class="list-group-item">'.$face['face_power'].' / '.$face['face_toughness'].'</li>'; $out .= '</ul>'; }; $out .= '</ul>'; } return $out; }; Pokud mám v $card_arr pouze 1 pole tak to funguje a funkce vrátí ul . Pokud ale předám 2 pole tak se po prvním foreach přepíše $out a funkce vrátí zase pouze 1 ul . Takže bych potřeboval poradit jak to udělat aby se to nepřepsalo a funkce vrátila 2 seznamy.
|
||
Kajman Profil |
Zkuste před rovnítko v sedmém řádku přidat tečku. Neodstraní to notice, ale možná nebude jen poslední ul.
Zkuste dumpnout i $card_arr na začátku funkce. |
||
janky Profil |
#8 · Zasláno: 4. 11. 2020, 00:16:56
Děkuji za pomoc. Tečka před rovnítkem pomohla a pokud jsou v $card_arr 2 pole funkce vypíše 2x ul.
Nevíte někdo proč v prvním případě nefungoval ten foreach ve foreach? |
||
Časová prodleva: 3 roky
|
0