странное поведение оператора []

  • Автор темы Автор темы baziak3
  • Дата начала Дата начала

baziak3

Новичок
странное поведение оператора []

Первый пример:

PHP:
function a( $a = array() ) {
    var_dump( $a );
}

$a = array( 1, 2 );
$a[] = 3;
a( $a );

выводит, как и ожидается:

array
0 => int 1
1 => int 2
2 => int 3

Другой, вроде бы, эквивалентный код:

PHP:
function a( $a = array() ) {
    var_dump( $a );
}

$a = array( 1, 2 );

a( $a[] = 3 );

выводит совсем другое:

int 3

ПОЧЕМУ?
 
Потому что в последнем примере ты передаёшь функции не массив, а значение "3", его возвращает оператор "=".
 
А чему же еще равно следующее выражение?
$a[] = 3
 
Потому что ты передаеш функции значение переменной $a[2]
 
ты функции передаешь не массив $a, а только $a[], которому только что передано 3
 
Сверху