Почему php принимает по умолчанию NULL как ноль

0
 <?php
    $a = NULL;
    $a++;
   echo "a value is $a";
   ?>

Он выводит: значение равно 1.

<?php
$a = NULL;
echo "a values is $a";
?>

It outputs:
a value is

Смутно об этом.. пожалуйста, объясните мне

Теги:

2 ответа

1

Это PHP Type Casting

http://php.net/manual/en/language.types.type-juggling.php

PHP автоматически изменяет тип переменной в зависимости от операции.

Объяснение:

Ваш код

<?php
$a = NULL; // $a is NULL
$a++;
?>

Но приращение ++ применимо только к целочисленным значениям, поэтому, когда вы пишете $a++, он автоматически преобразует $a в integer и, поскольку он равен NULL, он устанавливается в 0 и затем увеличивается.

  • 0
    Это является частью «слабой типизации» и основано на правилах жонглирования типов в PHP. php.net/manual/en/language.types.type-juggling.php
0

Для -

<?php
$a = NULL;
$a++;
echo "a value is $a"; 
?>

Когда эта операция выполняется $a сначала преобразуется в integer и получает в ней значение 0 поскольку оно содержит NULL. Таким образом, это печать 1 качестве значения.

Для -

<?php
$a = NULL;
echo "a values is $a";
?>

Никакие преобразования не применяются здесь, поскольку они напечатаны как есть. Так что там ничего нет.

  • 0
    Технически это преобразуется в строку для вывода, просто нулевое значение переходит в пустую строку, которая ничего не выводит.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню