Հղումները PHP-ում

PHP-ում կարելի է մի փոփոխականի արժեքը վերագրել մյուսին.

php<?php
  $num1 = 1;
  $num2 = $num1; // վերագրում ենք
  
  echo $num1; // 1
  echo $num2; // 1
?>

Նման վերագրումով նոր փոփոխականին գրվում է առաջին փոփոխականի արժեքի պատճենը: Սա նշանակում է, որ փոփոխականները ոչ մի կապ չունեն mիմար և դրանք կարելի է անկախ փոփոխել: Նայեք կոդի օրինակին.

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - չի փոխվել
?>

Սակայն, կարելի է անել այնպես, որ պատճենվի ոչ թե փոփոխականի արժեքը, այլ հղում դրա վրա: Այս դեպքում մի փոփոխականի արժեքը փոխելիս կփոխվի նաև մյուսի արժեքը:

Որպեսզի արժեքը փոխանցվի հղումով, անհրաժեշտ է փոփոխականի անվան դիմաց դնել ամպերսանդ.

php<?php
  $num1 = 1;
  $num2 = &$num1; // փոխանցում ենք հղումով
?>

Այժմ առաջին փոփոխականի փոփոխումը կհանգեցնի նաև երկրորդի փոփոխմանը.

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - փոխվել է
?>

Նմանապես, եթե մենք փոխենք առաջին փոփոխականը, ապա կփոխվի նաև երկրորդը.

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num1 = 2;
  
  echo $num2; // 2
?>
Задание 1

Պատմեք, թե որոնք կլինեն կոդի կատարման արդյունքները.

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1;
  echo $num2;
?>
Задание 2

Պատմեք, թե որոնք կլինեն կոդի կատարման արդյունքները.

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 3

Պատմեք, թե որոնք կլինեն կոդի կատարման արդյունքները.

php<?php
  $num1 = 1;
  $num2 = $num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 4

Պատմեք, թե որոնք կլինեն կոդի կատարման արդյունքները.

php<?php
  $num1 = 1;
  $num2 = &$num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>