Diskuze: asociativní pole polí
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
foreach ($obsahStranky[0] as $odkazy)
{
//$a .= ("ahoj");
$a .= $odkazy;
print_r($odkazy);
}
Tento kod mi vypíše duplicitní (po sobě stejnou) hodnotu, takže zabalení foreach cyklu do for cyklu který by zvišoval index u obsahStranky sam o sobe neřeší problém.
ahoj, řešení je v tomto případě jednoduché, musíš se odkázat na
daný index.
za předpokladu že platí $obsahStranky = Array ( [0] => Array ( [url] =>
uvodd [0] => uvodd ) [1] => Array ( [url] => zadejteURL [0] =>
zadejteURL ) [2] => Array ( [url] => prihlaseni [0] => prihlaseni ) [3]
=> Array ( [url] => fwfw [0] => fwfw ) [4] => Array ( [url] =>
registrace [0] => registrace ) [5] => Array ( [url] => jidelnicek [0]
=> jidelnicek ) )
tak kod bude vypadat takto:
foreach ($obsahStranky as $odkazy)
{
print_r($odkazy['url']);
}
Cyklus procházi jednotlivá pole 0 - N, v ten moment máš v porměnné $odkazy pole na dan0m indexu v hlavním poli. Takže už ti stačí jen odkázat na index co chceš vytáhnout z daného "vnitřního" pole. Snad jsem to popsal pochopitelně.
tím získám všechny hodnoty ale nemůžu snima dále jednotlivě pracovat protože je to prostý string.
Ja jsem ti napsal jak dostaneš neduplicitní hodnoty, ale já neví co stím chceš dál dělat. Napiš co stim dál a vymslíme to.
Prakticky co o tom premyslim tak potrebuji ziskat pouze posledni pole z pole na co by mohla byt v PHP funkce. Jdu trochu pogoglit a snad neco najdu. Prece jen ve dne se o tom premysli lepe nez ve 3. rano
foreach ($obsahStranky as $odkazy)
{
$a[]=($odkazy['url']);
//$a = (' ');
//$a .= ('</a>');
//print_r('ahoj');
}
print_r($a);
foreach ($a as $odkazy)
{ $aa .= ('<h1>');
$aa .= ($odkazy);
$aa .= ('</h1>');
}
print_r($aa);
Hotove a funkcni. Dekuji za nasmerovani spravnym smerem
nebude toto lepší ?
foreach ($obsahStranky as $odkazy)
{
echo '<h1>'.$odkazy['url'].'</h1>'
}
nebo napiš k čemu to chceš a co to má dělat.
Momentálně vypadá kod takto:
foreach ($a as $odkazy){
$aa = '';
for ($i = 0; $i < 4; $i++)
//
{ $aa .= ('</li><li class="nav-item"><a class="nav-link link" href="');
$aa .= ($a[$i]);
$aa .= ('" aria-expanded="false">');
$aa .= ($b[$i]);
$aa .= ('</a>');
}
$aaa ='';
for ($i = 4; $i < 16; $i++)
{
$aaa .= ('<a class="dropdown-item" href="');
$aaa .= ($a[$i]);
$aaa .= ('">');
$aaa .= ($b[$i]);
$aaa .= ('<br></a>');
}
}
$aaaa=[
$aa,
$aaa
];
// print_r($aaaa);
return $aaaa;
Kod funguje, pár věcí tam ještě budu vylepšovat spíše mě teď štve upozornění: Undefined offset: 14 in. Nějak se PHPčku nelíbí vkládání dat do $aa a $aaa. Jinak kod nacita udaje z DB aby mohl vypsat menu a for cyklus je kvuli tomu ze do sablony nemuzu vkladat vsechny odkazy do sablony, protoze se nevejdou.
... Kompletni kod je:
foreach ($obsahStranky as $odkazy)
{
//$a .= ('</li><li class="nav-item"><a class="nav-link link" href="uvod" aria-expanded="false">');
$b[]=($odkazy['titulek']);
$a[]=($odkazy['url']);
//print_r ($b);
}
//print_r($a);
$x= -1;
$aa = '';
$aaa = '';
foreach ($a as $odkazy){
$aa = '';
for ($i = 0; $i < 4; $i++)
//
{ $aa .= ('</li><li class="nav-item"><a class="nav-link link" href="');
$aa .= ($a[$i]);
$aa .= ('" aria-expanded="false">');
$aa .= ($b[$i]);
$aa .= ('</a>');
}
$aaa ='';
for ($i = 4; $i < 16; $i++)
{
$aaa .= ('<a class="dropdown-item" href="');
$aaa .= ($a[$i]);
$aaa .= ('">');
$aaa .= ($b[$i]);
$aaa .= ('<br></a>');
}
}
$aaaa=[
$aa,
$aaa
];
// print_r($aaaa);
return $aaaa;
Možná bych popřemýšlel o jiné databázové struktuře. Protože pokud ted přidáš jednu položku tak to budeš muset celé přepsat. Být tebou naučím se nejdřiv pořádně použivat zakladní funkce PHP a něco si o tom zijstit. Protože to co tu píšeš je opravdu něco co nění hezký.
1. bod: zvyk, prakticky je to jedno ne ?
2.bod: Ano, toto předělám
3:bod: vytvářeno systémem pokus omyl, přepíšu je
4.bod: Děkuji za tip, určitě kouknu
Jinak s tím přepsáním ano momentálně jo ale přidám databázový dotaz který mi vrátí počet řádků tabulce a danou proměnou dosadim místo čísla 16.
foreach ($obsahStranky as $odkazy)
{
//$a .= ('</li><li class="nav-item"><a class="nav-link link" href="uvod" aria-expanded="false">');
$titulek[]=($odkazy['titulek']);
$url[]=($odkazy['url']);
$pocet=count($url);
//print_r ($pocet);
}
//print_r($a);
//$x= -1;
foreach ($url as $odkazy){
$menu1 = '';
for ($i = 0; $i < 4; $i++)
//
{
$menu1 .= ('</li><li class="nav-item"><a class="nav-link link" href="'.$url[$i].'" aria-expanded="false">'.$titulek[$i].'</a>');
}
$menu2='';
for ($i = 4; $i < $pocet; $i++)
{
$menu2 .= ('<a class="dropdown-item" href="'.$url[$i].'">'.$titulek[$i].'<br></a>');
}
}
$PoleMenu=[
$menu1,
$menu2
];
// print_r($aaaa);
return $PoleMenu;
Konečná podoba než si přečtu nějaký článek, který mi řekne že to dělám úplně blbě
Zobrazeno 13 zpráv z 13.