Diskuze: PHP LARAVEL nechapen vysledok tohoto cyklus
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 8 zpráv z 8.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Mozna by bylo dobre napsat, co ten kod ma delat a co to dela ted. A jake hodnoty jsou v jednotlivych promennych. Jestli je umis vypsat pro kazdy radek cyklu, treba. V php to delam pres scho nebo var_dump, vsude, kde se ma zmenit nejaka promena.
Podle mne, z toho kodu neni jasne ani to, jake hodnoty jsou na zacatku.
Zkus na chvilku zapomenout na db a zkus tam dat cisla, vyrobit jednoduchy
spustitelny priklad.
A ted by bylo moc fajn, kdybys ten kod vlozit sem, aby slo udelat copy paste.Z
obrazku to neudelas. Takhle to neni mozne otestovat, jake to dava vysledky.
A bylo by mozna dobre, aby sis na vysledky polic udelal funkci.
function xxx($dopyt)
{
$v = $dopyt->...;
return $v>240 && $v<250 ? 5 : ($v>=250 && $v<265 ? 6 : false);
}
$pocet_polic = xxx($dopyt);
----
$a = 97,6 * (60 - 10) / 10000 * 9,55 = 4,6604
$b = 4,6604 * 6 + ??? = 27,9624 + ??? = 27,9624
$suma1 = $suma1 + $b = ??? + $b
$suma1 = $suma1 + $b = ??? + $b // pises, ze 2x
$suma1 = 55,9248
$a = 97,6 * (60 - 10) / 10000 * 9,55 = 4,6604
$c = 4,6604 * 6 + ??? = 27,9624 + ??? = 27,9624
$suma6 = $suma6 + $b = ??? + $b = 27,9624
$suma = $suma6 = 27,9624 // ty pises o jakemsi 83? To mas odkud?
// A vubec, zamysli se nad kazdym otaznikem.
// A co je v suma1 a 6 predtim. Jestli tam nejsou data z jineho cyklu, vyrobku
Jinak, ten cuklus bych stavel takto:
$suma = 0;
cyklus()
{
if (...)
{
...
$suma += ...
}
elseif (...)
{
...
$suma += ...
}
}
echo $suma;
<?php
$pole = ['http://localhost/bibi/public/img/vypln/1.png','http://localhost/bibi/public/img/vypln/1.png','http://localhost/bibi/public/img/vypln/6.png'];
$cena_vnutro1 = 0;
$cena_vnutro6 = 0;
$cena6 = 0;
$cena1 = 0;
for($i = 0; $i < 3; $i++ ){// cyklus prebehne 3 krat 1,2,3
if( $pole[$i] == 'http://localhost/bibi/public/img/vypln/1.png' ){ //tento obrazok je vo výsledoku 2x
$pocet_polic = 6;
$cena_polica1 = ( 97.6 * (60 - 10) / 10000 ) * 9.55;
$cena1 = $cena_polica1 * 6;//vysledok je 27,9624 + hranovanie
}
$cena_vnutro1 += $cena1;
// koniec obr1 http://localhost/bibi/public/img/vypln/1.png
if( $pole[$i] == 'http://localhost/bibi/public/img/vypln/6.png' ){ //tento obrazok je vo výsledoku 1x
$pocet_polic = 6;
$cena_polica6 = ( 97.6 * (60 - 10) / 10000 ) * 9.55;
$cena6 = $cena_polica6 * 6;//vysledok je 27,9624 + hranovanie
}
$cena_vnutro6 += $cena6; // 27.96 ok
}
echo $cena_vnutro = $cena_vnutro1 + $cena_vnutro6; //to je po cykly
Tak ze som kod zjednodusil v cyklus prebehne 3x , 2x s jednou podmienkou
(obrazkom), 1x jednou podmienkou. Výsledok kazdej podmienky je 27,9624 x 3 =
83,8872.
Ale môj výsledok je ešte o jednu otácku vyšší 83,8872 + 27,9624 =
111,8496 prečo ?
float(27.9624) int(0) float(55.9248) int(0) float(83.8872) float(27.9624)
111.8496
tak že prvá podmienka platí 27.9624
druha neplati 0
------------------------------------------------------ 1. krok cyklu
prvá podmienka platí 55.9248
druha neplati 0
------------------------------------------------------ 2. krok cyklu
prvá podmienka neplatí ale hodnota sa navýšila 83.8872
druha platí 27.9624
------------------------------------------------------ 3. krok cyklu
výsledok 111.8496
tak asi si si odpoviem sám ... posunul som cena1 = 0 pred prvu podmienku
a cena6 = 0 pred druhu podmienku a myslim ze uz to rata spravne 
<?php
$pole = ['http://localhost/bibi/public/img/vypln/1.png','http://localhost/bibi/public/img/vypln/1.png','http://localhost/bibi/public/img/vypln/6.png'];
$cena_vnutro1 = 0;
$cena_vnutro6 = 0;
for($i = 0; $i < 3; $i++ ){// cyklus prebehne 3 krat 1,2,3
$cena1 = 0;
if( $pole[$i] == 'http://localhost/bibi/public/img/vypln/1.png' ){ //tento obrazok je vo výsledoku 2x
$pocet_polic = 6;
$cena_polica1 = ( 97.6 * (60 - 10) / 10000 ) * 9.55;
$cena1 = $cena_polica1 * 6;//vysledok je 27,9624 + hranovanie
}
var_dump($cena_vnutro1 += $cena1);
// koniec obr1 http://localhost/bibi/public/img/vypln/1.png
$cena6 = 0;
if( $pole[$i] == 'http://localhost/bibi/public/img/vypln/6.png' ){ //tento obrazok je vo výsledoku 1x
$pocet_polic = 6;
$cena_polica6 = ( 97.6 * (60 - 10) / 10000 ) * 9.55;
$cena6 = $cena_polica6 * 6;//vysledok je 27,9624 + hranovanie
}
var_dump($cena_vnutro6 += $cena6); // 27.96 ok
}
echo $cena_vnutro = $cena_vnutro1 + $cena_vnutro6; //to je po cykly
Tak, uz to vidim. A bylo to nejspis i v te puvodni verzi. Az na to, ze tam
cast kodu chybela.
Problem je ten, co jsem zminil s tim if-elseif.
c1 = 0
cyklus (1,1,0)
if=true {c1 = 123}
if=false {c2 = 234}
c += c1 + c2 // c1=123, c2 = 0 // ty to mas pod kazdym ifem c+=c1, c+=c2, ale to melo byt uvnitr ifu!
if=true {c1 = 123}
if=false {c2 = 234}
c += c1 + c2 // c1=123, c2 = 0
if=false {c1 = 123}
if=true {c2 = 234}
c += c1 + c2 // c1=123, c2 = 234 // c1 zustalo z predchoziho cyklu 123, ale ty ocekavas nulu
---
// Cili tohle
if=true {c1 = 123}
c += c1
if=false {c2 = 234}
c += c2
// a tohle je uplne neco jineho
if=true {c1 = 123; c += c1}
if=false {c2 = 234; c += c2}
// nebo
if=true {c1 = 123; c += c1}
elseif=false {c2 = 234; c += c2}
V tom prvnim pripade pripocitavas c1 a c2 vzdy, ikdyz if nebyl true a hodnotu nenulujes, takze beres z prechoziho cyklu. Podobne bys dopadl, kdybys to v array otocil, zas by tam bylo navic 234 a dokonce 2x.
Ono, cele si to tim c1 a c2 komplikujes, to je zbytecne navic.
//$cena1 = $cena_polica1 * 6
//$cena_vnutro1 += $cena1
$cena_vnutro1 += $cena_polica1 * 6 // to je totez, az na to, ze tohle budes
// mit uvnitr ifu, takze ti nenastane stejny pripad
Zobrazeno 8 zpráv z 8.