| Autor | Zpráva | ||
|---|---|---|---|
| PetraPP Profil |
#1 · Zasláno: 3. 11. 2014, 13:12:53
Jak za pomocí IF provést řazení dat po třech. Data vypisuji přes foreach ($zdroj as $data).
<div> <p>Data č.1</p> <p>Data č.2</p> <p>Data č.3</p> </div> <div> <p>Data č.4</p> <p>Data č.5</p> <p>Data č.6</p> </div> <div> <p>Data č.7</p> </div> |
||
| juriad Profil |
Zavzpomínej na matametiku a použij operátor modulo (v PHP se zapisuje jako %). Budeš tedy muset upravit cyklus tak, abys věděla, kolikátý záznam zpracováváš.
for ($i = 0; $i < 10; $i++) {
if ($i % 3 == 0) {
if ($i > 0) {
echo "</div>\n";
}
echo "<div>\n";
}
echo "Data číslo $i\n";
}
echo "</div>"; |
||
| PetraPP Profil |
#3 · Zasláno: 3. 11. 2014, 13:47:13
A pokud bych začátky <div> potřebovala ještě odlišovat různou třídou class, tak by PHP vypadalo jak?
<div class="test">, <div class="demo">, <div class="kolac">, <div class="plech"> a já nevím co ještě :) |
||
| juriad Profil |
#4 · Zasláno: 3. 11. 2014, 13:53:14
Napřed musíš vymyslet pravidlo, které k aktální skupině přidělí třídu. Pak prostě tam tu třídu přidáš.
echo "<div class=\"$trida\">\n"; Pokud by to bylo prostě v tomto pořadí, tak by mohlo stačit něco jako: $tridy = array('test', 'demo', 'kolac', 'plech');
...
$trida = $tridy[$i / 3]; |
||
| PetraPP Profil |
Naprosto šťastná, díky moc juriad ! Ještě naprosto poslední otázka, pak už dám pokoj :)
Pokud bych měla třídy uloženy jako $tridy = array('test', 'demo', 'kolac', 'plech'); a výpis by byl po třech, jak bych takovou třídu mohla vypsat v podobě?:
<div> <p class="test">Data č.1</p> <p class="demo">Data č.2</p> <p class="kolac">Data č.3</p> </div> <div> <p class="test">Data č.4</p> <p class="demo">Data č.5</p> <p class="kolac">Data č.6</p> </div> <div> <p class="test">Data č.7</p> </div> |
||
| juriad_ Profil * |
#6 · Zasláno: 3. 11. 2014, 14:31:16
Ano jen presunes vypis tridy ke kazde polozce a pole nebudes indexovat $i/3 ale $i%3.
|
||
| PetraPP Profil |
#7 · Zasláno: 3. 11. 2014, 16:25:26
Mockrát děkuji.
Ještě jsem našla jeden script, který bych ale potřebovala převést do IF: ($detekce_zarizeni->isMobile() ? ($detekce_zarizeni->isTablet() ? '2' : '1') : '3'); Jde o to, že tam chci přidat další parametry :) |
||
| anonymníí Profil * |
#8 · Zasláno: 3. 11. 2014, 16:29:23
PetraPP:
if ($detekce_zarizeni->isMobile()) {
if ($detekce_zarizeni->isTablet()) {
echo 2;
} else {
echo 1;
}
} else {
echo 3;
} |
||
| PetraPP Profil |
#9 · Zasláno: 3. 11. 2014, 18:14:37
Měla bych dotaz ještě na výpis do array:
for ($i = 0; $i < 10; $i++) {
$x = floor($i / 3);
if ($i % 3 == 0) {
if ($i > 0) {
$data[$x] .= "</div>\n";
}
$data[$x] .= "<div>\n";
}
$data[$x] .= "Data číslo $i\n";
}
$data[$x] .= "</div>";Bohužel do array nedostanu přímo tento HTML kus: <div> <p class="test">Data č.1</p> <p class="demo">Data č.2</p> <p class="kolac">Data č.3</p> </div> Zkoušela jsem různé možnosti, ale ani jedna mě nedovedla tam, kam bych potřebovala. Nějak nejsem na logické přemýšlení, což mě mrzí, protože musím s tím obtěžovat Vás :( Přesto za výpomoc budu hrooozně moc ráda. |
||
| juriad Profil |
PetraPP:
Můžeš si to klidně rozdělit do dvou cyklů: # there are 3 classes => each div will contain at most 3 paragraphs
$classes = array('test', 'demo', 'kolac');
$max = 10;
$chunks = array();
for ($i = 0; $i < ceil($max / count($classes)); $i++) {
# $i is number of the current div
$chunk = "<div>\n";
for ($j = 0; $j < count($classes) && $i * count($classes) + $j < $max; $j++) {
# $j is number of current p inside current div
$n = $i * count($classes) + $j;
# $n is number of current p globally
$chunk .= "<p class=\"" . $classes[$j] . "\">Data č. " . $n . "</p>\n";
}
$chunk .= "</div>\n";
$chunks[] = $chunk;
}
print_r($chunks);Ty zvýrazněné podmínky jsou o něco složitější, ale vevnitř pak již nemusíš dělit a modulit. |
||
|
Časová prodleva: 12 let
|
|||
0