Sigfault  4 Мая 2009 12:16:09

PHP → PHP - глобально и надёжно

Жили были дед и баба, ели кашу с молоком, баба стала использовать php, дед разозлился и дал ложкой в лоб.

if ('3434') {
    print 'True';
} else {
    print 'False';
}

if ('0') {
    print 'True';
} else {
    print 'False';
}

Вобщем-то предсказуемое поведение PHP, но не верное.

Из этой же оперы:

var_dump(array('123' => '344'));
array(1) {
    [123]=>
    string(3) "344"
}

$a1 = array(12 => 155);
$a2 = array(15 => 344);
var_dump(array_merge($a1, $a2));
array(2) {
    [0]=>
    int(155)
    [1]=>
    int(344)
}

Это же явная проблема. Особенно видно в таком примере:

var_dump(array('123' => 'Abc', 123 => 'Xyz'));
array(1) {
    [123]=>
    string(3) "Xyz"
}
После этого я стал поддерживать деда в его деле с ложкой и бабкиным лбом.

  • Digg it!
  • Delicious
  • +МоёМесто.ru
  • Добавить страницу к Мистеру Вонгу
  • Добавить страницу к Мистеру Вонгу

Комментарии КОММЕНТАРИИ (3)

 4 Мая 2009 17:05:57 |  # 

Да, последний пример огорчает конечно. Но лучше знать недостатки в лицо, что б умело с ними бороться. Это все удел нестрогой типизации языка.

 4 Мая 2009 17:08:14 |  # 

ЗЫ: а деду не надо злиться на бабку, нужно уважать ее выбор, быть толерантнее и просто показать ей решения более элегантные и интересные :)

 5 Мая 2009 14:40:05 |  # 

Дело в том, что последний пример может быть источником редких, плохо повторимых ошибок. От этого неявного преобразования одни неприятности, причём скрытые. Это, конечно же, особенность языка, но IMHO очень нехорошая. Жаль времени, потраченного на выявление таких вот нюансов.

Зарегистрируйтесь или выполните Вход для того чтобы оставлять комментарии