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

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
 

LeoKee

Новичок
Потому что ты передаеш функции значение переменной $a[2]
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
ты функции передаешь не массив $a, а только $a[], которому только что передано 3
 
Сверху