Hodnota písmene „i“ v podmínce?
- Hafran
- Člen | 121
Zdravím, narazil jsem na malou nesrovnalost, kterou zaboha nemůžu pochopit. Byl bych rád kdyby mi to zkušenější programátor vysvětlil:
v Session mám uložen nákupní košík. Klíč pole tvoří pouze čísla
(id) objednávek a „i“.
Dump:
array(4) {
i => 3
0 => array(3) {
}
1 => array(3) {
}
2 => array(3) {
}
}
V presenteru tvořím formulář kde pro každou položku vytvořím jeden „text“ a vynechávám samozřejmě index „i“.
foreach ($this->context->cart->getItems() as $id => $item) {
if ($id != "i") {
$form->addText("code_" . $id, '')
->getControlPrototype()->class('code')
}
}
Když použiji tuhle podmínku, aby mi to při smyčce vynechalo „i“
if ($id != "i") {
vynechá mi to i položku s číslem 0
musím tedy použít
if ($id !== "i") {
což vůbec nechápu proč? Z jakého důvodu bere program i==0? Očekávám že hodnotu bere jako boolean ale chtěl bych vědět proč, jenžto bylo docela složité chybu najít. ;)
- Caine
- Člen | 216
A co třeba zkusit přímo manual: http://www.php.net/…mparison.php
If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically. These rules also apply to the switch statement. The type conversion does not take place when the comparison is === or !== as this involves comparing the type as well as the value.