პრეფიქსული და პოსტფიქსული ტიპი PHP-ში

სინამდვილეში ინკრემენტის და დეკრემენტის ოპერაციები შეიძლება ჩაიწეროს ორი გზით. პოსტფიქსულ ვერსიაში ოპერაცია იწერება ცვლადის სახელის შემდეგ, აი ასე: $a++, ხოლო პრეფიქსულ ვერსიაში - ცვლადის სახელის წინ, აი ასე: ++$a. მაგალითებით ვნახოთ, რა განსხვავებაა ამ ორ გზას შორის.

შემდეგ მაგალითში პირველი echo გამოიტანს 0-ს, რადგან თავდაპირველად მოხდება ეკრანზე გამოტანა, ხოლო მხოლოდ ამის შემდეგ გაიზრდება ცვლადის მნიშვნელობა:

php<?php
  $num = 0;
  echo $num++; // გამოიტანს 0-ს, რადგან ცვლადი გაიზრდება მხოლოდ echo-ს შემდეგ
  echo $num;   // გამოიტანს 1-ს - ცვლადი შეიცვალა
?>

ახლა კი ცვლადი თავდაპირველად გაიზრდება და მხოლოდ ამის შემდეგ მოხდება ეკრანზე გამოტანა:

php<?php
  $num = 0;
  echo ++$num; // გამოიტანს 1-ს - ცვლადი დაუყოვნებლივ გაიზარდა
?>

მსგავსი ქმედება დამახასიათებელია არა მხოლოდ ეკრანზე გამოტანისთვის, არამედ მინიჭებისთვისაც:

php<?php
  $num1 = 0;
  $num2 = $num1++; // $num2 ცვლადში ჩაიწერება 0
  echo $num2;      // გამოიტანს 0-ს
  echo $num1;      // გამოიტანს 1-ს - ცვლადი $num1 შეიცვალა $num2-ში ჩაწერის შემდეგ
?>

ახლა კი პოსტფიქსული ფორმა პრეფიქსულით ჩავანაცვლოთ:

php<?php
  $num1 = 0;
  $num2 = ++$num1; // $num2 ცვლადში ჩაიწერება 1
  echo $num2;      // გამოიტანს 1-ს
?>

თუ ჩვენი ოპერაცია სრულდება ცალკე სტრიქონზე, მაშინ პრეფიქსულ და პოსტფიქსულ ფორმებს შორის განსხვავება არ არის:

php<?php
  $num = 0;
  ++$num;
  $num++;
  echo $num; // გამოიტანს 2-ს
?>
Задание 1

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num = 3;
  echo ++$num;
?>
Задание 2

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num = 3;
  echo $num++;
?>
Задание 3

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num = 3;
  echo --$num;
?>
Задание 4

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num = 3;
  echo $num--;
?>
Задание 5

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

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

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

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

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num1 = 3;
  $num2 = --$num1;
  echo $num1;
  echo $num2;
?>
Задание 8

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num1 = 3;
  $num2 = $num1--;
  echo $num1;
  echo $num2;
?>
Задание 9

კოდის გაშუქების გარეშე, დაადგინეთ, რა გამოიტანს ეკრანზე:

php<?php
  $num1 = 3;
  $num1++;
  $num2 = $num1--;
  echo $num1++;
  echo --$num2;
?>