php - What is the precidency and associtivity for increment operator and assignment operator for the block of code -
what precidency , associtivity increment operator , assignment operator block of code
$a=array(1,2,3); $b=array(4,5,6); $c=1;  $a[$c++]=$b[$c++];  print_r($a); as per execution outputs
 array        (              [0] => 1          [1] => 6          [2] => 3        ) but not able understand how array $a index 1 holds value of array $b index 2 value. can explain scenario how execution happens?
php (once again) different other languages in left part of assignment evaluates first. simple proof:
$a[print 1] = $b[print 2]; // print? according http://3v4l.org/, code:
$a = array(); $b = array(); $c = 1; $a[$c++]=$b[$c++]; generated following opcodes:
compiled vars:  !0 = $a, !1 = $b, !2 = $c line     # *  op                           fetch          ext  return  operands ---------------------------------------------------------------------------------    2     0  >   init_array                                       ~0                1      assign                                                   !0, ~0          2      init_array                                       ~2                3      assign                                                   !1, ~2          4      assign                                                   !2, 1    3     5      post_inc                                         ~5      !2          6      post_inc                                         ~7      !2          7      fetch_dim_r                                      $8      !1, ~7          8      assign_dim                                               !0, ~5          9      op_data                                                  $8, $9         10    > return                                                   1 the opcode 5 left $c++, , opcode 6 right $c++. final assignment (opcode 8) evaluated as
$a[1] = $b[2]; which results in (1,6,3).
Comments
Post a Comment