Sətr ifadələri

PHP-də sətrlər əsas obyektlərdən biridir. Əvvəlki mövzularda qeyd edildiyi kimi, sətrlərdə formatlaşdırma simvolları ilə birlikdə mətn və hətta ikilik sistemdə verilənləri saxlamaq mümkündür. Cüt dırnaq və ya apastrof arasında təyin edilmiş sətrlər sintaktik cəhətdən doğru olaraq bir sətrdə başlayıb digər sətrdə bitə bilər:

$multiline = "Bu mətn bir sətrdə başlayır,
ikinci sətrdə,
üçüncü sətrdə davam edir və s.";

Əvvəki mövzularda biz nümunələrdə cüt dırnaq və ya apastrof arasında təsfir edilmiş sətr sabitlərindən istifadə etmişdik. Onlar arasında fərqi izah edək.

Apastrofa alınmış sətr

Əgər sətr apastrof arasında yazılıbsa (məsələn, 'sətr') o, hərfi mənada, yazıldığı kimi qəbul edilir. Sətr daxilində iki halda xüsusi iki işarə ardıcıllığı bu qaydadan kənara çıxır:

\' ardıcıllığı PHP tərəfindən apastrof işarələri arasında yazılmış sətr daxilində bir apastrof işarəsi çapı kimi başa düşülür: 'apastrof \' kimi yazılır';
\\ ardıcıllığı bir tərsinə bölmə – tərsinə sleş – işarəsi kimi başa düşülür və sətrin daxilində bu işarəni çap etməyə imkan verir: 'C:\\my_file.txt'.

Digər başqa simvollar məhz özlərini işarə edirlər və xüsusi hal olaraq qeyd etmək lazımdır ki, $ işarəsinin bu halda heç bir xüsusi mənası olmur. Bu, həmçinin o deməkdir ki, apastrof işarələri daxilində yazılmış sətrlərdə qeyd edilmiş dəyişənlərin identifikatorları interpolyasiya edilmir, yəni onlar qiymətləri ilə əvəz edilmirlər.

Dırnaq arasında sətr

Apastrofla müqayisədə dırnaq işarələri daha “liberaldır”. Belə ki, dırnaq işarələri arasında yazıldıqda bu və ya digər xüsusi simvolu işarə edən xüsusi metasimvollar ardıcıllıqlarının sayı daha çoxdur. Aşağıda onlardan bir neçəsi göstərilib:

\n yeni sətr işarəsidir;
\r karterin geri qaytarılması işarəsi;
\t tabulyasiya simvolu;
\$ xüsusi $ işarəsini təsfir edir. Bu halda $ işarəsindən sonra gələn yazı dəyişən kimi interpolyasiya edilmir;
\" dırnaq işarəsini göstərir;
\\ bir tərsinə sleş işarəsini göstərir;
\xNN onaltılıq sistemdə kodu NN olan işarəni göstərir.

Sətrlərin daxilində dəyişənlər interpolyasiya edilirlər. Məsələn:

$hi = "Hello";
echo "$hi world!";

Bu fraqment aşağıdakı yazını çap edir:

Hello world!

yəni, sətrin daxilində $hi yazısı məhz $hi dəyişəninin qiyməti ilə əvəz edildi. Buna səbəb istənilən dəyişənin qarşısında yazılmış dollar işarəsidir.

Başqa nümunəyə baxaq:

$SOME = "Hell"; // sonunda "o" hərfi yazılmamış "Hello" sözü
echo "$SOMEo world!";

Biz bu halda da nəticəni əvvəlki nümumənin nəticəsi kimi gözləyə bilərik, ancaq bu halda PHP $SOME və ya $SOMEo dəyişənindən məhz hansının nəzərdə tutdulduğunu müəyyən edə bilməyəcək. Bu fraqmenti işə salsaq PHP $SOMEo dəyişəninin müəyyən edilmədiyi haqda məlumat çap edəcək. İstədiyimiz nəticəni əldə etmək üçün nümunə aşağıdakı kimi yazılmalıdır:

$SOME = "Hell"; // sonunda "o" hərfi yazılmamış "Hello" sözü
echo $SOME."o world!"; // bir üsul
echo "{$SOME}o world!"; // növbəti üsul
echo "${SOME}o world!"; // üçüncü üsul

Göründüyü kimi, bu problemi dəf etməyin üç üsulu mövcuddur. İstəkdən asılı olaraq istənilən bir variantı istifadə etmək olar. Ən perspektiv variant kimi isə {$SOME} yazılışını göstərmək lazımdır. Çünki, bu üsulla sətr daxilində dəyişənlərin qiymətləri ilə yanaşı, həmçinin, massiv elementləri və obyektlərin parametrlərini də göstərmək mümkündür:

$action = array(
	"left" => "survive",
	"right" => "kill'em all"
); 
echo "Seçilmiş element: {$action['left']}";

{} konstruksiyası daxilində massivin açar sözünü göstərmək üçün istifadə edilən apastroflara fikir vermək lazımdır. Onlar yazılmasa interpertator xəbərdarlıq göstərəcək. Fiqurlu mötərizələrsiz və apastrofsuz yazılarsa:

echo "Seçilmiş element: $action[left]";

xəbərdarlıq göstərilməyəcək və əvvəlki nümunə ilə eyni sətr çap ediləcək.

Məntiqi ifadələr

PHP-də istənilən ifadə öz “məntiqi” mənasında məntiqi ifadə hesab edilə bilər. Belə ki, əvvəlki mövzularda qeyd edildiyi kimi məntiqi doğru rolunu istənilən sıfırdan fərqli rəqəm, sıfırla nəticələnməyən ifadə, boş olmayan yazı və s. ifadələr, məntiqi yanlış rolunu isə digər ifadələr oynaya bilər

Məntiq dəyişənləri haqqında danışılarkən qeyd edilmiş bütün xüsusiyyətlər məntiqi ifadələr üçün də doğrudur. Məntiqi ifadələr çox vaxt >, <== (bərabərlik), || (məntiqi VƏ YA), && (məntiqi VƏ), ! (məntiqi İNKAR) və s. operatorların istifadəsilə yaranır. Məsələn:

$less = 10 < 5;// $less - yalan $equals = $b == 1;// $equals - $b == 1 olarsa doğru, $between = $b >= 1 && $b <= 10;// $between - $b 1-dən 10-a qədər (10 daxil olmaqla) olarsa doğru
$x = !($b || $c) && $d;// $b və $c yalan, а $d - doğru olarsa true

Bu və ya digər məntiq dəyişəninin doğruluğu elə istənilən məntiqi ifadələrin yoxlanılması kimi eyni üsulla yerinə yetirilir:

$between = $x >= 1 && $x <= 7; // $between -ə ifadənin qiymətini mənimsədirik
if ($between) echo "x lazımi aralıqdadır";

İfadələr və əməliyyatlar

Əvvəlki mövzularda proqramın əməliyyat etdiyi dəyişənlər, onların tiplərinə ətraflı nəzər yetirildi. Bu bölmədə PHP proqramlaşdırma dilinin əsas imkanları haqqında danışılacaq.

İfadələr

Ümumi baxsaq, ifadələr PHP-in üzərində dayandığı sütunlardan biridir. Praktik olaraq proqramda nə yazılırsa hamısı ifadədir. İfadə dedikdə müəyyən mənaya malik “nəsə” başa düşülür. Bunun əksi də düzgündür. Əgər nəsə müəyyən mənaya malikdirsə bu elə ifadədir.

İfadəyə ən sadə misal olaraq mənimsətmə operatorunun sağ tərəfində dayanan dəyişən və ya sabiti göstərmək olar. Məsələn: $a = 5; operatorunda 5 rəqəmi ifadədir, çünki o, 5 qiymətinə malikdir. Belə mənimsətmədən sonra biz haqlı olaraq deyə bilərik ki, $a 5-dir. Bundan sonra $b = $a; yazsaq aydındır ki, $b də 5 olacaq, çünki operatorun sağında yerləşmiş $a 5 qiymətinə malikdir.

Əvvəldə yazdığımız kimi, praktiki olaraq proqramı tərtib etdiyimiz hər şey ifadədir və $b = $a yazısı da həmçinin ifadədir. Bu ifadənin qiymətini asanlıqla təxmin etmək olar: 5. Bu isə o deməkdir ki, aşağıdakı kimi əmrlər də yazmaq olar:

$a = ($b = 10);   // və ya sadəcə $a = $b = 10

Bu zaman $a$b dəyişənlərinə 10 qiyməti mənimsədiləcək. Daha mürəkkəb, trivial görsənməyən misala baxaq:

$a = 3 * sin($b = $c + 10) + $d

Bu əmrlərin yerinə yetirilməsindən sonra dəyişənin qiyməti aşağıdakı sətirlərin yerinə yetirilməsi ilə eyni hüquqlu olacaq:

$b = $c + 10;
$a = 3 * sin($c + 10) + $d;

Göründüyü kimi, PHP-də mürəkkəb ifadənin hesablanması zamanı onun müəyyən hissəsi növbəti sətrlərdə lazım olacaqsa, o hissəni dəyişənlə göstərmək olar. Bu üsul işi çox rahatlaşdıra, proqramın kodunu xeyli qısalda bilər. Bu zaman kodun oxunaqlığı əvvəlki səviyyədə qalır. Buna görə də bu üsuldan lazım olduqca istifadə etmək məsləhətdir.

Qeyd etmək lazımdır ki, hər bir ifadənin qiymətinin özünün tipi var. Məsələn:

$a = 10 * 20; 
$b = "" . (10 * 20); 
echo "$a:".gettype($a).", $b:".gettype($b); // "200:integer, 200:string" çap olunacaq