Autor | Zpráva | ||
---|---|---|---|
Shaim Profil |
#1 · Zasláno: 25. 10. 2013, 12:51:36
Zdravím,
jaké použití doporučujete a proč? Všechny způsoby se mi zdají identické. Nejčitelnější se mi zdá $var2. Liší se to ještě nějak kromě čitelnosti? <?php $var1 = $var2 = $var3 = '5A#'; $var1 = intval($var1); $var2 = (int) $var2; settype($var3, 'integer'); var_dump($var2); // int(5) var_dump($var2); // int(5) var_dump($var3); // int(5) ?> Děkuji. |
||
ShiraNai7 Profil |
#2 · Zasláno: 25. 10. 2013, 14:40:07
Shaim:
„jaké použití doporučujete a proč?“ • Pokud potřebuješ přetypovat, použij type casting - tzn. (int) . Je to jazykový kostrukt přesně pro tento účel.
• Použití intval() by se dalo obhájit potřebuješ-li pro převod uvést soustavu (druhý parametr intval() u).
• settype() bych využil pouze v případě, kdy potřebuješ přetypovat dynamicky.
„Liší se to ještě nějak kromě čitelnosti?“ Každá možnost je trochu něco jiného: • (int) = jazykový konstrukt.
• intval() = funkce s možností specifikace soustavy
• settype() = funkce pro dynamické přetypování
Další rozdíl už bude snad jen v rychlosti: • (int) = 430ns (0.00043ms)
• intval() = 4742ns (0.004742ms) (cca 11x pomalejší než (int) )
• settype() = 4906ns (0.004906ms) (o trochu pomalejší než intval() )
Rozdíly nejsou tak velké, ale proč používat intval() (který má overhead kvůli tomu, že se jedná o volání funkce), když by stačil rychlejší a čitelnější (int) .
|
||
Alphard Profil |
#3 · Zasláno: 25. 10. 2013, 16:45:06
Pro malichernosti nevidíte asi nejzásadnější rozdíl. settype() přebírá proměnou jako referenci a mění původní proměnnou, tj. původní hodnota je ztracena. Zbylé dva způsoby zachovají původní proměnnou, jen vrátí její obsah po určité tranformaci.
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 25. 10. 2013, 18:06:05
Protože
intval je funkce, lze ji použít jako callback.
$numbers = array_map('intval', $numbers); |
||
Shaim Profil |
#5 · Zasláno: 26. 10. 2013, 12:49:50
Děkuji pánové, na tomto webu jsem se dozvěděl už spoustu věcí a vždy mě to posune o kousek dál. Velké díky! :)
|
||
Časová prodleva: 11 let
|
0