Zjištění neexistujícího klíče v latte
- Webster.K
- Člen | 212
Zdravím všechny, řeším jednu drobnost a nevím si rady. Jde o ověření, zda existuje klíč v poli. Mám seznam knih
$pole = array(0=>'nazev_prvni_knihy',1=>'nazev_druhe_knihy');
Toto pole je tvořeno z databáze, nicméně některé indexy tam nejsou,
nejde tedy o přesnou řadu 0,1,2,3,4,5… ale třeba jen
o 0,1,2,5,6,8,9 atd.
V latte šabloně mám kód:
{ifset $seznamKnih[$informace->id_knihy]}
Problém je ten, že podmínka projde a sekne se to na řádku, kde tento index potřebuji vypsat, končí to tedy chybou: Undefined offset: 15, tedy, že index 15 neexistuje.
Když před $seznamKnih dám vykřičník, tedy ifset !$seznamKnih, vrátí to rovnou chybu: Cannot use isset() on the result of an expression (you can use „null !== expression“ instead)
Nenapadá někoho, co s tím?
- Webster.K
- Člen | 212
{foreach $informaceDB as $informace}
{ifset $seznamKnih[$informace->id_knihy]}
<div class="alert alert-danger">
<div class="col-lg-12">
//tady jsou vypisovány všechny informace
{$seznamKnih[$informace->id_knihy]}
</div>
</div>
{/ifset}
{/foreach}
Do šablony je $seznamKnih plněn z funkce:
public function seznamKnihPole() {
$data = $this->database->table('knihy')->where('stav',0);
foreach ($data as $row) {
$vysledek[$row->id_knihy] = $row->nazev_knihy;
}
if ($data) {
return $vysledek;
} else {
return false;
}
}
a informace jsou plněny takto:
public function informace($typ = 0) {
if ($typ) {
$knihy = $this->database->table('informace')->where('datum < ?', $this->cas->aktualniDatum());
} else {
$knihy = $this->database->table('informace')->where('datum < ?', $this->cas->posunDnu('+7 days'));
}
if ($knihy) {
return $knihy;
} else {
return false;
}
}
v ty tabulce informace nejsou informace ke všem knihám, tabulka knih je daleko větší
- David Matějka
- Moderator | 6445
to je divny, ten kod je spravne. opravdu je ta chyba na tom radku? tedy kdyz ho smazes, tak se prestane ta chyba zobrazovat?