Autor | Zpráva | ||
---|---|---|---|
Aloiss Profil * |
#1 · Zasláno: 6. 7. 2014, 19:28:35
Ahoj, můžu poprosit jaký je rozdíl mezi (tedy pokuď nějaký vůbec je)
$row['akce'] $row->akce |
||
učenec Profil * |
#2 · Zasláno: 6. 7. 2014, 19:44:53
pomocí
$row['akce'] přistupuješ k indexu pole, kdežto $row->akce $row představuje instanci nějaké třídy, která má vlastnost(proměnnou) akce. Aspoň myslím... |
||
Jcas Profil |
$row['akce']=>'hodnota'; Rozložím ti to:
$row je proměnná se jménem row a v tomto případě je hodnotou této proměnné pole. ['akce'] je klíč jednoho prvku pole.
'hodnota' je string a ten je hodnotou prvku pole $row['akce']
Pro naše ochotné a skvělé tvůrce učebnice php: Kapitola pole je nějaká divná. Moderátor jenikkozak: Autor později smazal text svého příspěvku. Vracím jej zpět, abych zachoval celistvost diskuse.
|
||
Alphard Profil |
#4 · Zasláno: 6. 7. 2014, 19:46:39
Rozdíl tam je. V prvním případě se přistupuje k prvku pole, v druhém případě se přistupuje k vlastnosti třídy (konkrétní instance). Někdy může fungovat obojí, pokud objekt implementují rozhraní ArrayAccess.
|
||
Joker Profil |
#5 · Zasláno: 6. 7. 2014, 19:53:43
Jcas:
> Pro naše ochotné a skvělé tvůrce učebnice php: > Kapitola pole je nějaká divná. Protože není ještě hotová. Informace o stavu, až budou, budou zde. |
||
Aloiss Profil * |
#6 · Zasláno: 6. 7. 2014, 21:53:58
aha díky, takže takhle jak to mám je vlastně blbost a správně by to tak nemělo být
<?php $sql = dibi::fetchAll('SELECT * FROM logy'); ... ... ... foreach($sql as $row) { echo '<span class="label label-default">'.$row->akce.'</span>'; } ?> |
||
Alphard Profil |
|||
Časová prodleva: 1 rok
|
|||
suvel Profil |
#8 · Zasláno: 7. 8. 2015, 21:30:04
Často se stkávám se scripty, které používají instance. Já jsem zvyklý používat spíš pole. Možná to bude někoho (třeba hlavně ty, kteří s programováním začínají a budou se muset rozhodnout, kdy a kde co použijí) zajímat - já to nevím: Je některá z těch metod výhodnější? A v jakém případě? Nebo je to z pohledu výsledku prakticky ekvivalent? Nakonec ten script funguje stejně, ať použiju instance nebo pole.
|
||
juriad Profil |
#9 · Zasláno: 7. 8. 2015, 21:56:32
suvel:
Objekt si můžeš představit jako takové nabušené pole: - má svůj zvláštní typ, který zajištuje, že vždy budou všechny prvky existovat - obsahuje funkce, které jej spravují - má vlastní syntaxi pro používání; operátory -> a :: Asi nemá smysl rozepisovat něco, co už bylo popsáno mnohokrát. Zkus si něco přečíst o objektovém programování a jeho výhodách. Docela rozumně vypadá (ale možná příliš technicky) programujte.com/clanek/2009113001-oop-v-php |
||
juriad Profil |
suvel:
Kdybys řešil něco s geometrií a potřeboval reprezentovat bod v rovině, asi by sis vytvoril pole o dvou prvcích buď array(1, 2)
nebo array('x' => 1, 'y' => 2)
a s tím by sis hrál. Časem by sis přidal funkce sečti, odečti, vzdálenost, které by vypadaly asi (pro ten druhý případ): function vytvor($x, $y) { return array('x' => $x, 'y' => $y); } function secti($b1, $b2) { return vytvor($b1['x'] + $b2['x'], $b1['y'] + $b2['y']); } function otoc($b) { return vytvor(-$b['x'], -$b['y']); } function odecti($b1, $b2) { return secti($b1, otoc($b2)); } function absolutni_hodnota($b) { return sqrt($b['x'] * $b['x'] + $b['y'] * $b['y']); } function vzdalenost($b1, $b2) { return absolutni_hodnota(odecti($b1, $b2)); } A toto už je zapsané skoro objektově; přepsáno by to bylo: class Bod { public $x; public $y; function __construct($x, $y) { $this->x = $x; $this->y = $y; } function secti($b2) { return new Bod($this->x + $b2->x, $this->x + $b2->y); } function otoc() { return new Bod(-$this->x, -$this->y); } function odecti($b2) { return $this->secti($b2->otoc()); } function absolutni_hodnota() { return sqrt($this->x * $this->x + $this->y * $this->y); } function vzdalenost($b) { return $this->odecti($b)->absolutni_hodnota(); } # díky tomuto můžeš přímo echovat bod (a bude vždy vypsán v hranatých závorkách). Na kolika místech bys to jinak psal? function __toString() { return '[' . $this->x . '; ' . $this->y . ']'; } } Teď je to však vše na jednom místě (vynuceně!); složky x a y jsou skutečně proměnné a nikoli prvky pole indexované řetězcem. Můžeš to snadno rozšiřovat. Chytřejší vývojová prostředí ti budou nabízet, co vše můžeš s bodem provádět. Nejprojdou ti už konstrukce, které fungují nad libovolným polem (menší pravděpodobnost neodhalitelných chyb). Když dostaneš od někoho bod, můžeš se spolehnout, že všechno, co o něm slíbil také bude fungovat. |
||
suvel Profil |
#11 · Zasláno: 8. 8. 2015, 07:01:32
OK, děkuju za názorné vysvětlení :-)
|
||
Časová prodleva: 9 let
|
0