PHPda qo'sh va bitta tirnoq o'rtasidagi farq. PHPda bitta va ikki tirnoqli satrlar o'rtasidagi farq nima? Php qo'shtirnoq ichida qo'sh tirnoq

Uy / Qurilmani o'rnatish

Izoh: 64-bitli platformalarda PHP 7.0.0 da 32-bitli tizimlarda liniya uzunligi boʻyicha erishish mumkin boʻlgan cheklovlar yoʻq va PHP ning oldingi versiyalarida liniyalar 2 GB (2147483647 bayt) dan katta boʻlishi mumkin emas.

Sintaksis

Satr to'rtta bilan belgilanishi mumkin turli yo'llar bilan:

  • yagona tirnoq
  • qo'sh tirnoq
  • nowdoc sintaksisi (PHP 5.3.0 dan beri)

Yagona tirnoq

Eng oddiy yo'l satrni belgilash uni bitta tirnoq ichiga olishdir (belgi " ).

Satr ichida bitta qo'shtirnoqdan foydalanish uchun undan teskari chiziq bilan qoching ( \ ). Agar siz teskari chiziqning o'zini yozishingiz kerak bo'lsa, uni takrorlang ( \\ ). Teskari chiziqdan boshqa barcha foydalanish oddiy belgilar sifatida talqin qilinadi: bu shuni anglatadiki, agar siz boshqa qochish ketma-ketliklaridan foydalanmoqchi bo'lsangiz, masalan, \r yoki \n, ular har qanday maxsus xatti-harakatlar o'rniga xuddi shunday chiqariladi.

aks-sado "Bu oddiy qator";

aks-sado "Siz qatorlarga ham kiritishingiz mumkin
bu kabi yangi qator belgisi,
Bu yaxshi"
;

// Natijalar: Arnold bir marta aytdi: "Men qaytaman"
aks-sado "Bir kuni Arnold: "Men qaytaman" dedi.;

Echo "C:\\*.*-ni o'chirib tashladingizmi?";

// Chiqishlar: C:\*.*-ni o'chirib tashladingizmi?
echo "C:\*.*-ni o'chirib tashladingizmi?" ;

// Chiqishlar: Bu kengaytirilmaydi: \n yangi qator
aks-sado "Bu kengaytirilmaydi: \n yangi qator";

// Chiqishlar: $expand va $either oʻzgaruvchilar kengaytirilmagan
aks-sado "$expand va $o'zgaruvchilar kengaytirilmagan";
?>

Ikkita tirnoq

Agar satr qo'sh tirnoq (") ichiga olingan bo'lsa, PHP quyidagi maxsus belgilar qochish ketma-ketligini taniydi:

Qochish ketma-ketligi
Keyingi ketma-ketlik Ma'nosi
\n yangi qator (ASCII da LF yoki 0x0A (10))
\r vagonni qaytarish (ASCIIda CR yoki 0x0D (13))
\t gorizontal yorliq (HT yoki ASCIIda 0x09 (9))
\v vertikal yorliq (ASCII da VT yoki 0x0B (11)) (PHP 5.2.5 dan beri)
\e qochish belgisi (ASCIIda ESC yoki 0x1B (27)) (PHP 5.4.4 dan beri)
\f sahifa tasmasi (FF yoki ASCIIda 0x0C(12)) (PHP 5.2.5 dan beri)
\\ teskari chiziq
\$ dollar belgisi
\" qo'sh tirnoq
\{1,3} baytga sig'ish uchun jimgina oshib ketadigan sakkizlik belgining muntazam ifodasiga mos keladigan belgilar ketma-ketligi (masalan, "\400" === "\000")
\x(1,2) o‘n oltilik sistemadagi belgining muntazam ifodasiga mos keladigan belgilar ketma-ketligi
\u(+) UTF-8 ko'rinishidagi satrga mos keladigan Unicode belgilar muntazam ifodasiga mos keladigan belgilar ketma-ketligi (PHP 7.0.0 da qo'shilgan)

Bitta qo'shtirnoq ichiga olingan qatorda bo'lgani kabi, har qanday belgidan qochish ham qochish belgisini chiqaradi. PHP 5.1.1 dan oldin, teskari qiyshiq chiziq \($var) nashr etilmagan.

Heredok

Satrlarni aniqlashning uchinchi usuli - heredoc sintaksisidan foydalanish: <<< . Ushbu operatordan so'ng siz identifikatorni, so'ngra chiziqli tasmani ko'rsatishingiz kerak. Shundan so'ng qatorning o'zi, so'ngra bir xil identifikator keladi, qo'shimchani yopadi.

Chiziq kerak yopilish identifikatori bilan boshlang, ya'ni. u satrning birinchi ustunida ko'rinishi kerak. Bundan tashqari, identifikator PHP-dagi barcha boshqa teglar kabi nomlash qoidalariga amal qilishi kerak: faqat harf-raqamli belgilar va pastki chiziqdan iborat bo‘lishi va raqam bilan boshlanmasligi kerak (pastki chiziqqa ruxsat beriladi).

Diqqat

Shuni ta'kidlash juda muhimki, yopilish identifikatori qatorida nuqta-verguldan tashqari boshqa belgilar bo'lmasligi kerak ( ; ). Bu id degan ma'noni anglatadi chekinmasligi kerak nuqtali verguldan oldin yoki keyin bo'sh joy yoki yorliq bo'lmasligi kerak. Shuni ham tushunish kerakki, yopilish identifikatoridan oldingi birinchi belgi operatsion tizimingiz tomonidan belgilangan yangi qator belgisi bo'lishi kerak. Misol uchun, UNIX tizimlarida, shu jumladan macOS, bu \n. Yopuvchi identifikatordan so'ng darhol yangi qator ham boshlanishi kerak.

Agar bu qoida buzilgan bo'lsa va yopish identifikatori "toza" bo'lmasa, yopilish identifikatori yo'q deb taxmin qilinadi va PHP uni yanada izlashda davom etadi. Agar bu holda to'g'ri yopish identifikatori hech qachon topilmasa, u skript oxiridagi satr raqami bilan tahlil qilish xatosini keltirib chiqaradi.

1-misol Noto'g'ri sintaksisga misol

sinf foo(
umumiy $bar =<<bar
EOT;
// yopilish identifikatoridan oldin chekinishga ruxsat berilmaydi
}
?>

2-misol To'g'ri sintaksisga misol

sinf foo(
umumiy $bar =<<bar
EOT;
}
?>

Heredoc-dan sinf maydonlarini ishga tushirish uchun ishlatib bo'lmaydi.

Heredok matni o'zini qo'sh tirnoq ichidagi satrga o'xshab, ularsiz ishlaydi.

Bu shuni anglatadiki, siz heredocdagi tirnoqlardan qochishingiz shart emas, lekin siz hali ham yuqoridagi qochish ketma-ketliklaridan foydalanishingiz mumkin.

O'zgaruvchilar qayta ishlanadi, lekin siz heredoc ichida murakkab o'zgaruvchilardan foydalanishda strings bilan ishlashda bo'lgani kabi ehtiyot bo'lishingiz kerak.<<3-misol Heredok string ta'rifiga misol
$str =
Misol qatori,
bir nechta qatorlarni qamrab oladi,

Heredoc sintaksisidan foydalanish.
{
EOD;
Sinf foo

var $foo ;
{
var $bar ;
Function__construct()
}
}

$this -> foo = "Foo" ;
$ bu ->

$foo = yangi foo();<<$name = "Ism" ; .
aks-sado
Mening ismim "$name". Men $foo -> foo yozaman .
Endi men xulosa qilyapman
EOT;
?>

($foo -> bar [ 1 ])

Bu "A" bosh harfini chiqarishi kerak: \x41

Mening ismim "Ism". Men Foo yozaman. Endi men Bar2 ni chiqaraman. Bu "A" bosh harfini chiqarishi kerak: A

Funktsiya argumentlari orqali ma'lumotlarni uzatish uchun heredoc sintaksisidan foydalanish ham mumkin:

5.3.0 versiyasidan boshlab, heredoc sintaksisidan foydalanib, statik o'zgaruvchilar va sinf xususiyatlarini/konstantalarini ishga tushirish mumkin bo'ldi:
Misol #5 Statik o'zgaruvchilarni ishga tushirish uchun heredocdan foydalanish
{
// Statik o'zgaruvchilar<<foo funksiyasi()
statik $bar =
}

Bu erda hech narsa yo'q ...
LABEL;
{
// Konstantalar/sinf xususiyatlari<<sinf foo
const BAR =

Konstantadan foydalanishga misol<<FOOBAR;
const BAR =
}
?>

Umumiy $baz =

Maydondan foydalanishga misol

PHP 5.3.0 dan boshlab, siz Heredoc identifikatorini qo'sh tirnoq bilan ham o'rashingiz mumkin: Nowdoc Nowdoc bitta tirnoqli satrlar uchun xuddi heredok ikki tirnoqli satrlar uchun bir xil. Nowdoc heredokga o'xshaydi, lekin uning ichida almashtirishlar amalga oshirilmaydi

. Ushbu dizayn PHP kodini yoki boshqa katta matn bloklarini undan qochib qolmasdan joylashtirish uchun ideal. Bunda u SGML konstruktsiyasiga biroz o'xshaydi <<< qayta ishlash uchun mo'ljallanmagan matn blokini e'lon qilish orqali. <<<"EOT" Nowdoc xuddi shu ketma-ketlik bilan ko'rsatilgan

, bu heredoc-da qo'llaniladi, lekin quyidagi identifikator bitta qo'shtirnoq ichiga olingan, masalan,

$foo = yangi foo();<<<"EOD"
.
Heredoc identifikatorlariga taalluqli barcha shartlar, ayniqsa, yopilish identifikatoriga taalluqli bo'lganlar nowdoc uchun ham amal qiladi.
7-misol Nowdoc-dan foydalanishga misol
Misol matn,
bir necha qatorlarni qamrab oladi

nowdoc sintaksisidan foydalanish. Teskari chiziqlar har doim tom ma'noda ishlanadi,

Nowdoc sintaksisidan foydalangan holda bir nechta qatorli matnga misol. Teskari chiziqlar har doim \\ va \" kabi tom ma'noda ko'rib chiqiladi.

8-misol Nowdoc qatori oʻzgaruvchilar bilan iqtibos keltiruvchi misol

/* Oʻzgaruvchilar bilan murakkabroq misol. */
LABEL;
{
ommaviy $foo ;
umumiy $bar ;

var $foo ;
{
var $bar ;
$this -> bar = array("Bar1" , "Bar2", "Bar3" );
}
}

$this -> foo = "Foo" ;
$ bu ->

$foo = yangi foo();<<<"EOT"
Mening ismim "$name". Men $foo->foo ni chop etaman.
Endi men chop etaman ($foo->bar).
Bu "A" bosh harfini chiqarmasligi kerak: \x41
EOT;
?>

nowdoc sintaksisidan foydalanish. Teskari chiziqlar har doim tom ma'noda ishlanadi,

Mening ismim "$name". Men $foo->foo ni chop etaman. Endi men chop etaman ($foo->bar). Bu "A" bosh harfini chiqarmasligi kerak: \x41

9-misol Statik ma'lumotlardan foydalanishga misol

sinf foo(
umumiy $bar =<<<"EOT"
bar
EOT;
}
?>

Izoh:

nowdoc yordami PHP 5.3.0 da qo'shildi.

O'zgaruvchilar bilan ishlash

Agar satr qo'sh tirnoq ichida yoki heredoc yordamida ko'rsatilgan bo'lsa, uning ichidagi o'zgaruvchilar qayta ishlanadi.

Sintaksisning ikki turi mavjud: oddiy va murakkab. Oddiy sintaksis osonroq va qulayroq. Bu o'zgaruvchini, massiv qiymatini qayta ishlashga imkon beradi ( massiv ) yoki ob'ekt xususiyatlari ( ob'ekt

) minimal harakat bilan.

Murakkab sintaksisni ifoda atrofidagi jingalak qavslar orqali aniqlash mumkin.

Oddiy sintaksis $ Agar tarjimon dollar belgisiga duch kelsa (

), u haqiqiy o'zgaruvchi nomini yaratish uchun iloji boricha ko'proq belgilarni oladi. Agar siz nomning oxirini belgilamoqchi bo'lsangiz, o'zgaruvchi nomini jingalak qavslar ichiga kiriting.

$juice = "olma" ;

echo "U $juice sharbatini ichdi." . PHP_EOL;
// noto'g'ri. "s" o'zgaruvchi nomi uchun haqiqiy belgidir, lekin o'zgaruvchi $juice deb ataladi.

echo "U $juicesdan tayyorlangan sharbat ichdi." ;
// To'g'ri. O'zgaruvchi nomining oxiri qavslar yordamida qat'iy ravishda ko'rsatilgan:
?>

nowdoc sintaksisidan foydalanish. Teskari chiziqlar har doim tom ma'noda ishlanadi,

echo "U $( sharbat ) s dan tayyorlangan sharbat ichdi." ;

U bir oz olma sharbatini ichdi. dan tayyorlangan sharbat ichdi. Olmadan tayyorlangan sharbat ichdi. Oddiy sintaksis osonroq va qulayroq. Bu o'zgaruvchini, massiv qiymatini qayta ishlashga imkon beradi ( Massiv elementi ( ) yoki ob'ekt xususiyatlari () yoki ob'ekt xususiyati ( ] ). Massiv indekslarida yopilish kvadrat qavs mavjud (

) indeks ta'rifining tugashini bildiradi. Oddiy o'zgaruvchilar bilan bir xil qoidalar ob'ekt xususiyatlariga nisbatan qo'llaniladi.

10-misol Oddiy sintaksis misoli
aniqlang ("KOOLAID", "koolaid1");

$juices = massiv("olma" , "apelsin" , "koolaid1" => "binafsha" );
echo "U bir oz $juices [ 0 ] sharbat ichdi." . PHP_EOL;
echo "U bir oz $juices [ 1 ] sharbat ichdi." . PHP_EOL;

echo "U bir oz $juices [ koolaid1 ] sharbat ichdi." . PHP_EOL;
sinf odamlari (
public $john = "Jon Smit" ;
ommaviy $jane = "Jeyn Smit" ;

public $robert = "Robert Paulsen" ;
}

Umumiy $smit = "Smit" ;

echo "$people -> Jon bir oz $juices [ 0 ] sharbat ichdi." . PHP_EOL;
echo " $people -> John keyin $people -> Jeynga salom aytdi." . PHP_EOL;
echo "$people -> Jonning xotini $people -> robert bilan salomlashdi." PHP_EOL;
echo " $people -> robert ikki $people -> Smitsga salom berdi." ; // Ishlamaydi
?>

nowdoc sintaksisidan foydalanish. Teskari chiziqlar har doim tom ma'noda ishlanadi,

U bir oz olma sharbatini ichdi. U apelsin sharbatini ichdi. U bir oz binafsha sharbat ichdi. Jon Smit olma sharbatini ichdi. Keyin Jon Smit Jeyn Smitga salom aytdi. Jon Smitning rafiqasi Robert Paulsen bilan salomlashdi.

PHP 7.1.0 qo'shimcha qo'llab-quvvatlash salbiy raqamli indekslar.

11-misol Salbiy raqamli indekslar

$string = "string" ;
aks-sado "-2 indeksidagi belgi ga teng$string [- 2 ] ." , PHP_EOL ;
$string [- 3 ] = "o" ;
aks-sado "-3 pozitsiyasidagi belgini "o" ga o'zgartirish quyidagi qatorni hosil qiladi:$string." , PHP_EOL;
?>

nowdoc sintaksisidan foydalanish. Teskari chiziqlar har doim tom ma'noda ishlanadi,

-2 indeksli belgi n ga teng. -3 pozitsiyasidagi belgini "o" ga o'zgartirish quyidagi qatorni beradi: kuchli

Murakkabroq narsa uchun murakkab sintaksisdan foydalaning.

Murakkab (jingalak) sintaksis

U tushunish qiyinligi uchun emas, balki murakkab iboralarni qo'llash imkonini bergani uchun murakkab deb ataladi.

Har qanday skalyar o'zgaruvchi, massiv elementi yoki satrga moslashtirilgan ob'ekt xususiyati ushbu sintaksis yordamida satrda ifodalanishi mumkin. Shunchaki iborani chiziqdan tashqarida bo'lgani kabi yozing va keyin uni o'rang { Va } . beri { qochib bo'lmaydi, bu sintaksis faqat qachon tan olinadi $ bevosita kuzatib boradi { . Foydalanish {\$ chop etish {$ .

Bir nechta yorqin misollar:
// Barcha xatolarni ko'rsatish

xato_hisoboti (E_ALL);

$buyuk = "ajoyib" ;
// Ishlamaydi, chiqadi: Bu (ajoyib)

echo "Bu ($buyuk)" ;
// Ishlar, natijalar: Bu ajoyib

echo "Bu ($buyuk)" ;
aks-sado // Ishlar“Bu maydon keng

( $square -> eni ) 00 santimetr." ;
// Ishlar, keltirilgan kalit so'zlar faqat jingalak qavs sintaksisi bilan ishlaydi

echo "Bu ($buyuk)" ;
echo "Bu ishlaydi: ( $arr [ "key" ]) " ;

echo "Bu ishlaydi: ( $arr [ 4 ][ 3 ]) " ;
// Bu $foo tashqarisidagi kabi sabablarga ko'ra yaroqsiz
// qatorlar. Boshqacha qilib aytganda, u hali ham ishlaydi,
// lekin PHP birinchi navbatda doimiy foo ni qidirganligi sababli, bu sabab bo'ladi
aks-sado // darajadagi xatolik E_NOTICE (aniqlanmagan doimiy)."Bu noto'g'ri:

( $arr [ foo ][ 3 ]) " ;
// Ishlar. Ko'p o'lchovli massivlarni ichkarida ishlatganda
// chiziqlar har doim jingalak qavslardan foydalanadi

echo "Bu ishlaydi: ( $arr [ "foo" ][ 3 ]) " ;
// Ishlar.

aks-sado echo "Bu ishlaydi: " . $arr [ "foo" ][ 3 ];( $obj -> qiymatlar [ 3 ] -> ism ) " ;

aks-sado "Bu nom berilgan o'zgaruvchining qiymati$name : ($( $name )) " ;

aks-sado "Bu getName() qaytaradigan oʻzgaruvchi nomining qiymati:($( getName ())) " ;

aks-sado "Bu \$object->getName() qaytaradigan nom bo'yicha o'zgaruvchining qiymati:($( $object -> getName ())) " ;

// Ishlamaydi, chiqadi: getName() nima qaytaradi: (getName())
aks-sado “GetName() funksiyasini qaytaradigan narsa: (getName())”;
?>

Ushbu sintaksis yordamida satrlar ichidagi ob'ekt xususiyatlariga kirish ham mumkin.

sinf foo(
var $bar = "Men barman." ;
}

$this -> foo = "Foo" ;
$bar = "bar" ;
$baz = massiv("foo" , "bar" , "baz" , "quux" );
echo " ( $foo -> $bar ) \n" ;
echo " ( $foo ->( $baz [ 1 ])) \n" ;
?>

nowdoc sintaksisidan foydalanish. Teskari chiziqlar har doim tom ma'noda ishlanadi,

Men barman. Men barman.

Izoh:

Funktsiyalar, usul chaqiruvlari, statik sinf o'zgaruvchilari va sinf konstantalari ichki ishlaydi {$} , PHP dan boshlab 5. Biroq, taqdim etilgan qiymat o'zgaruvchi nomi sifatida u aniqlangan qator bilan bir xil kontekstda ko'rib chiqiladi. Yagona jingalak qavslardan foydalanish ( {} ) funktsiyalar, usullar, sinf konstantalari yoki statik sinf o'zgaruvchilari qiymatlariga kirish uchun ishlamaydi.

Bir nechta yorqin misollar:
// Barcha xatolarni ko'rsatish

sinf pivolari (
const softdrink = "rootbeer" ;
umumiy statik $ale = "ipa" ;
}

$rootbeer = "A & W" ;
$ipa = "Aleksandr Keyt" ;

// Bu ishlaydi, chiqadi: Men A va W istayman
echo "Men xohlayman ($( beers :: softdrink )) \n" ;

// Bu ham ishlaydi, chiqadi: Men Aleksandr Keytni xohlayman
echo "Men xohlayman ($( pivo :: $ale )) \n" ;
?>

Satrdagi belgiga kirish va o'zgartirish

Satrlardagi belgilarni satrning boshidan boshlab, noldan boshlab, kvadrat qavslar ichida satrdan keyin belgilash orqali foydalanish va o'zgartirish mumkin, masalan, $str . Bu maqsad uchun satrni belgilar qatori sifatida tasavvur qiling. Va Agar siz 1 dan ortiq belgini olishingiz yoki almashtirishingiz kerak bo'lsa, funksiyalardan foydalanishingiz mumkin.

Izoh: substr() substr_replace() PHP 7.1.0 dan boshlab salbiy ofset qiymatlari qo'llab-quvvatlanadi. Ular chiziq oxiridan ofsetni belgilaydilar. Ilgari salbiy ofsetlar darajadagi xatolikka sabab bo'lgan E_NOTICE

Izoh: o'qishda (bo'sh satrni qaytarish) yoki

Diqqat

E_OGOHLANTIRISH Ular chiziq oxiridan ofsetni belgilaydilar. Ilgari salbiy ofsetlar darajadagi xatolikka sabab bo'lgan.

Diqqat

Belgilangan satrning faqat birinchi belgisi ishlatiladi.

Izoh: PHP 7.1.0 dan boshlab, bo'sh qatorni belgilash halokatli xatolikka olib keladi. Ilgari, bu holatda, nol bayt (NULL) tayinlangan.

PHPdagi satrlar baytlarning ichki massivlaridir. Natijada, ofsetda satrga kirish yoki o'zgartirish ko'p baytli kodlash xavfsiz emas va faqat ISO-8859-1 kabi bir baytli kodlashdagi satrlar bilan amalga oshirilishi kerak.

PHP 7.1.0 bo'lganligi sababli, bo'sh indeksdan foydalanish halokatli xatoga olib keladi, bu holda satr ogohlantirishsiz massivga aylantirildi;
12-misol Ba'zi misol qatorlari
// Satrning birinchi belgisini oling

$str = "Bu sinov." ;
$first = $str [ 0 ];

// Satrning uchinchi belgisini oling
$third = $str [ 2 ];
// Satrning oxirgi belgisini oling

$str = "Bu hali ham sinov." ;
$oxirgi = $str [ strlen ($str ) - 1 ];
// Satrning oxirgi belgisini o'zgartiring

?>

$str = "Dengizga qarang" ; $str [ strlen ($str )- 1 ] = "e" ; PHP 5.4 dan boshlab, satrdagi ofset butun son yoki raqamlarni o'z ichiga olgan qator sifatida ko'rsatilishi kerak, aks holda ogohlantirish beriladi. Ilgari ofset kabi qator bilan berilgan 0 .

"foo"

, ogohlantirishsiz aylantirildi

13-misol PHP 5.3 va PHP 5.4 o'rtasidagi farqlar
$str = "abc" ;

Var_dump($str["1"]);
var_dump (isset($str [ "1" ]));

Var_dump($str["1.0"]);
var_dump (isset($str [ "1.0" ]));

Var_dump($str["x"]);
var_dump (isset($str [ "x" ]));
?>

Var_dump($str["1x"]);

var_dump (isset($str [ "1x" ]));

Ushbu misolni PHP 5.3 da ishga tushirish natijasi:

string(1) "b" bool(true) string(1) "b" bool(true) string(1) "a" bool(true) string(1) "b" bool(true)

Izoh:

Ushbu misolni PHP 5.4 da ishga tushirish natijasi: string(1) "b" bool(true) Ogohlantirish: 7-satrda /tmp/t.php da "1.0" ning noqonuniy ofseti string(1) "b" bool(false) Ogohlantirish: / ichidagi noqonuniy satr ofset "x" tmp/t.php 9-satrda string(1) "a" bool(false) string(1) "b" bool(false) {} Boshqa turdagi o'zgaruvchilarga (ma'lum interfeyslarni amalga oshiradigan massivlar yoki ob'ektlar bundan mustasno) kirishga urinish yoki.

Izoh:

indamay qaytadi NULL {} .

PHP 5.5 sintaksisi yordamida satr harflaridagi belgilarga kirish uchun qo'shimcha yordam berdi

yoki

Satrlarni o'zgartirish uchun juda ko'p foydali funktsiyalar mavjud.

Asosiy funktsiyalar string funktsiyalari bo'limida tasvirlangan va kengaytirilgan qidirish va almashtirish uchun Perl-mos keladigan muntazam ifoda funktsiyalari. Stringga aylantirish Qiymat cast yordamida satrga aylantirilishi mumkin strval(). aks-sado string(1) "b" bool(true) Ogohlantirish: 7-satrda /tmp/t.php da "1.0" ning noqonuniy ofseti string(1) "b" bool(false) Ogohlantirish: / ichidagi noqonuniy satr ofset "x" tmp/t.php 9-satrda string(1) "a" bool(false) string(1) "b" bool(false) Satr talab qilinadigan iboralarda konvertatsiya avtomatik ravishda amalga oshiriladi. Bu funksiyalardan foydalanganda sodir bo'ladi chop etish.

, yoki oʻzgaruvchining qiymati satr bilan solishtirilganda. Qo'llanmaning Turlar va Turlarni manipulyatsiya qilish bo'limlarini o'qib chiqish quyidagilarni aniqroq qiladi. Shuningdek qarang settype() Massivlar har doim satrga aylantiriladi Oddiy sintaksis osonroq va qulayroq. Bu o'zgaruvchini, massiv qiymatini qayta ishlashga imkon beradi ("massiv" aks-sado NULL Satr talab qilinadigan iboralarda konvertatsiya avtomatik ravishda amalga oshiriladi., shuning uchun siz massiv tarkibini ko'rsatolmaysiz ( ), foydalanish unda nima borligini ko'rish uchun. Bitta elementni ko'rish uchun shunga o'xshash narsadan foydalaning

echo $arr["foo"] . Barcha tarkibni qanday ko'rsatish/ko'rish bo'yicha maslahatlar uchun pastga qarang. Tur o'zgaruvchisini aylantirish uchun "Ob'ekt" turida

ip yoki __toString sehrli usuli qo'llaniladi.

Ma'nosi har doim bo'sh satrga aylantiriladi. Va Yuqorida ko'rib turganingizdek, massivlarni, ob'ektlarni yoki resurslarni satrga to'g'ridan-to'g'ri aylantirish qiymatlarning o'zlari haqida ularning turlaridan boshqa hech qanday foydali ma'lumot bermaydi..

Nosozliklarni tuzatish uchun qiymatlarni chiqarishning eng yaxshi usuli bu funksiyalardan foydalanishdir print_r().

var_dump()

PHP-dagi aksariyat qiymatlar doimiy saqlash uchun satrga aylantirilishi mumkin. Bu usul serializatsiya deb ataladi va funksiya yordamida amalga oshirilishi mumkin

serialize() Satrlarni raqamlarga aylantirish Agar satr raqamli qiymat sifatida tan olinsa, natijada olingan qiymat va tur quyidagicha aniqlanadi. Agar satrda ".", "e" yoki "E" belgilari bo'lmasa va raqamning qiymati butun sonlar (belgilangan) chegarasiga to'g'ri kelsa. PHP_INT_MAX ), satr butun son sifatida tan olinadi ().

butun son

). Boshqa barcha hollarda u suzuvchi nuqtali raqam hisoblanadi (
suzmoq Qiymat satrning boshlanishi bilan belgilanadi. Agar chiziq haqiqiy raqamli qiymatdan boshlansa, bu qiymat ishlatiladi. Aks holda qiymat 0 (nol) bo'ladi. To‘g‘ri raqamli qiymat bir yoki bir nechta raqam (u o‘nli kasrni o‘z ichiga olishi mumkin), ixtiyoriy ravishda oldidan belgi va ixtiyoriy ko‘rsatkichdan iborat. Ko'rsatkich "e" yoki "E" dan keyin bir yoki bir nechta raqamdan iborat.
$foo = 1 + "10,5" ;
// $foo - float (11.5)
$foo = 1 + "-1.3e3" ; // $foo - suzuvchi (-1299)
$foo = 1 + "bob-1.3e3" ; // $foo butun son (1) $foo = 1 + "bob3" ; // $foo butun son (1)
$foo = 1 + "10 ta kichik cho'chqa" ;
// $foo butun son (11)
?>

Ushbu konvertatsiya haqida qo'shimcha ma'lumot olish uchun Unix hujjatlaridagi strtod(3) bo'limiga qarang.

Agar siz ushbu bo'limdagi misollardan birini sinab ko'rmoqchi bo'lsangiz, nima sodir bo'lishini ko'rish uchun uni va quyidagi qatorni nusxalang va joylashtiring:

echo "\$foo== $foo ; yozing: " . gettype ($foo). "
\n" ;
?>

Belgining kodini butun songa aylantirish orqali olishni kutmang (masalan, C da). Belgilarni ASCII kodlariga va orqaga aylantirish uchun funksiyalardan foydalaning ord() Va chr().

String turini amalga oshirish tafsilotlari

7 yil oldin

Hujjatlarda aytilmagan, lekin heredok oxiridagi yopilish nuqtali vergul haqiqiy nuqtali vergul sifatida talqin qilinadi va shuning uchun ba'zida sintaktik xatolarga olib keladi.

$foo =<<abcd
OXIRI;
?>

Bunga quyidagilar kirmaydi:

foo (<<abcd
OXIRI;
);
// sintaksis xatosi, kutilmagan ";"
?>

Nuqtali vergulsiz u yaxshi ishlaydi:

foo (<<abcd
OXIRI
);
?>

3 yil oldin

Siz char qatori kabi satrdan foydalanishingiz mumkin (masalan, C)

$a = "String massivi testi";

var_dump($a);
// Qaytish satri (17) "String massivi testi"

var_dump($a);
// Qaytish satri (1) "S"

// -- massivni taqsimlash bilan --
var_dump((massiv) $a);
// Massivni (1) qaytarish ( => string (17) "String massivi testi")

var_dump((massiv) $a);
// Qaytish satri (17) "S"

Norixiori

15 yil oldin

Ob'ekt xususiyatlari va ob'ekt usullarining qiymatini satr ichiga qo'yish uchun murakkab sintaksisdan foydalanishingiz mumkin. Masalan...
sinf testi (
umumiy $bir = 1 ;
davlat funktsiyasi ikki() (
qaytish 2;
}
}
$test = yangi test();
echo "foo ( $test -> bir ) bar ( $test -> ikkita ()) " ;
?>
"foo 1 bar 2" chiqaradi.

Biroq, buni nom maydonidagi barcha qiymatlar uchun qila olmaysiz. Sinf konstantalari va statik xususiyatlar/usullar ishlamaydi, chunki murakkab sintaksis "$" ni qidiradi.
sinf testi (
const ONE = 1;
}
echo "foo (Test::ONE) bar" ;
?>
Bu "foo (Test:: one) bar" chiqaradi. Doimiy va statik xususiyatlar satrni buzishni talab qiladi.

3 yil oldin

Ehtiyot bo'ling, "Stringni raqamlarga aylantirish" bilan mos keladi:

Agar ("123abc" == 123 ) aks sado chiqsa "(intstr == int) rost deb noto'g'ri tekshiradi.";

// Bir tomoni raqam bo'lganligi sababli, satr noto'g'ri intstr dan int ga o'zgartiriladi va u test raqamiga mos keladi.

// if va switch iboralari kabi barcha shartlar uchun rost (ehtimol, while sikllari ham)!

// Bu faqat butun sonni kutish va sinovdan o'tkazishda foydalanuvchi ma'lumotlarini sinab ko'rish/foydalanish/saqlashda katta xavfsizlik xavfi bo'lishi mumkin.

// Ko'rinishidan, yagona tuzatish 123 ning "123" qatori bo'lishidir, shuning uchun hech qanday konvertatsiya bo'lmaydi.

?>

6 yil oldin

Satrlardagi bosh nollar (eng kam hayratlanarli) sakkizlik deb hisoblanmaydi.
Ko'rib chiqing:
$x = "0123" + 0;
$y = 0123 + 0;
echo "x - $x, y - $y"; // "x 123, y 83" ni chop etadi
boshqa so'zlar bilan aytganda:
* manba kodidagi raqamli harflardagi bosh nollar "sakkizlik" deb talqin qilinadi, c.f. strtol().
* satrlardagi bosh nollar (masalan, foydalanuvchi tomonidan taqdim etilgan maʼlumotlar), butun songa (toʻgʻridan-toʻgʻri yoki aniq) oʻtkazilganda eʼtiborga olinmasa va oʻnlik son sifatida qabul qilinadi, c.f. strtod().

10 yil oldin

Ikki tirnoqli satrlar va geredoklarga jingalak qavslar sintaksisida o'zboshimchalik bilan ifodalarni, jumladan, doimiylar va boshqa funktsiya chaqiruvlarini o'z ichiga olishiga ruxsat berishning oson usuli:

// Hack deklaratsiyasi
_expr funksiyasi ($v ) ($v ; ni qaytarish)
$_expr = "_expr" ;

// Bizning o'yin maydonchasi
aniqlash ("qwe" , "asd");
aniqlash("zxc", 5 );

$a= 3 ;
$b= 4 ;

funktsiyasi c($a, $b) (qaytish$a+ $b; }

// Foydalanish
aks-sado"oldin{ $_expr(1 + 2 )} post\n"; // "3 postdan oldingi" chiqadi
aks-sado"oldin{ $_expr(qwe)} post\n"; // "pre asd post" chiqadi
aks-sado"oldin{ $_expr(c($a, $b)+ zxc* 2 )} post\n"; // "17 postdan oldingi" chiqadi

// Umumiy sintaksis ($_expr(...))
?>

2 yil oldin

Menimcha, ma'lumot hech bo'lmaganda PHP saytining o'ng sahifasida paydo bo'lishi uchun ushbu sharhni qo'shish foydali bo'ladi.

Esda tutingki, agar siz assotsiativ kalit bilan ikki tirnoqli satrdan foydalanmoqchi bo'lsangiz, T_ENCAPSED_AND_WHITESPACE xatosiga duch kelishingiz mumkin. Ba'zilar buni kamroq aniq xato xabarlaridan biri deb hisoblashadi.

Quyidagi kabi ifoda:

$ meva=massiv(
"a"=> "olma",
"b"=> "banan",
//va hokazo
);

Chop etish “Bu a$ meva[ "a"]"; // T_ENCAPSED_AND_WHITESPACE
?>

albatta parchalanib ketadi.

Siz buni quyidagicha hal qilishingiz mumkin:

Satr talab qilinadigan iboralarda konvertatsiya avtomatik ravishda amalga oshiriladi.“Bu a$ meva[ a] " ; // kalitni olib tashlang
Satr talab qilinadigan iboralarda konvertatsiya avtomatik ravishda amalga oshiriladi.“Bu a${ meva[ "a"]} " ; // Murakkab sintaksis
Satr talab qilinadigan iboralarda konvertatsiya avtomatik ravishda amalga oshiriladi.“Bu a{ $ meva[ "a"]} " ; // Murakkab sintaksis o'zgarishi
?>

Men oxirgi variantni afzal ko'raman, chunki u tabiiyroq va ibora satrdan tashqarida qanday bo'lishiga yaqinroq.

Nima uchun PHP ibora ichidagi bitta qo'shtirnoqni noto'g'ri talqin qilgani (hech bo'lmaganda men uchun) tushunarsiz, lekin men buni qo'shtirnoq qiymatlar qatorining bir qismi emasligi bilan bog'liq deb o'ylayman - satr allaqachon tahlil qilinayotgandan so'ng, qo'shtirnoqlar shunchaki tahlil qilinadi. yo'lda to'sqinlik qil...?

2 yil oldin

Ikkalasi ham ishlashi kerak :(

sinfSinov{
umumiy statik
$VAR= "statik";
ommaviy konst VAR =
"const";

Jamoat funktsiyasi deng HelloStatic() {
aks-sado
"Salom:{ $bu:: $VAR} " ;
}

Jamoat funktsiyasi dengHelloConst() {
aks-sado
"Salom:{ $bu::VAR)" ; // Tahlil xatosi: sintaksis xatosi, kutilmagan ")", kutilayotgan "["
}
}

$obj= yangiSinov();
$obj-> deng HelloStatic();
$obj-> dengHelloConst();

3 yil oldin

Men boshdan kechirgan narsa, shubhasiz, kimgadir yordam beradi. . .
Mening muharririmda bu sintaksis HTML va $ commentni ajratib ko'rsatadi:

$html =<<<"EOD"
$ sharh
bir nechta qatorlarni qamrab oladi,

Buni ishlatish bir xil rangni ko'rsatadi:

$html =<<$ sharh
bir nechta qatorlarni qamrab oladi,

u bilan ishlashni ancha osonlashtiradi

11 yil oldin

Fikringizni saqlash uchun sanalar haqidagi oldingi sharhlarni o'qimang;)

Ikkala satr ham raqamlarga aylantirilishi mumkin bo'lsa (("$a" > "$b") testida), natijada olingan raqamlar ishlatiladi, aks holda TO'LIQ satrlar har bir belgi bilan taqqoslanadi:

var_dump("1.22" > "01.23" ); //bool(noto'g'ri)
var_dump("1.22.00" > "01.23.00" ); //bool(to'g'ri)
var_dump("1-22-00" > "01-23-00" ); //bool(to'g'ri)
var_dump((suzuvchi)"1.22.00" > (suzuvchi)"01.23.00" ); //bool(noto'g'ri)
?>

PHP-dagi satrlar bitta yoki ikkita tirnoq bilan o'ralgan. Asosiy farq shundaki, siz o'zgaruvchini qo'sh tirnoq ichiga qo'yishingiz mumkin:

Endi biz PHPdagi o‘zgaruvchilar darsidan muammoning boshqa yechimini topishimiz mumkin:

$title"; aks-sado "

$kontent
"; ?>

PHP o'zgaruvchini satrda qanday topadi?

Bu oddiy. O'zgaruvchan nomda qanday belgilar ishlatilishi mumkinligini eslaysizmi? Bu raqamlar, harflar va pastki chiziq _.

Shunday qilib, PHP $ belgisi va birinchi taqiqlangan belgi orasidagi hamma narsani nom sifatida oladi.

Quyidagi kodda PHP o'zgaruvchi nomini noto'g'ri aniqlaydi va xatoga yo'l qo'yadi:

Brauzerda natija:

Eslatma: Aniqlanmagan o'zgaruvchi: 3-qatordagi D:\OpenServer\domains\site\index.php ichidagi pricerub

PHP satrdagi o'zgaruvchining nomini to'g'ri aniqlashi uchun uni jingalak qavslar () ichiga joylashtirishingiz kerak:

Brauzerda natija:

1499 rub

Hech narsa almashtirilishi kerak bo'lmagan oddiy satrlar uchun qanday tirnoqlardan foydalanish kerakligi haqida aniq konsensus yo'q. Biroq, ko'plab dasturchilar bitta tirnoqdan foydalanishni afzal ko'rishadi.

Gap shundaki, ko'p odamlar uchun qo'sh tirnoq "bu qatorga nimadir kiritish kerak" assotsiatsiyasini keltirib chiqaradi. Shuning uchun, men oddiy matn uchun bitta tirnoqdan foydalanishni tavsiya qilaman va faqat matnga o'zgaruvchini almashtirish kerak bo'lganda qo'sh tirnoq. Misol:

Qo'shtirnoqlardan qochish

Agar satr ichiga tirnoq qo'yish kerak bo'lsa, buni qilishning 2 yo'li mavjud:

Ikkinchi misolda, teskari chiziq \ quyidagi tirnoqdan qochadi, shunda PHP uni satr sifatida ko'radi.

Ekranda faqat teskari qirrali chiziqlarni ko'rsatish uchun nima qilish kerak deb o'ylaysiz? Axir, u yopilish kotirovkasidan qochib ketadi. Bu kulgili, lekin birinchisidan qochish uchun ikkinchi chiziqni yozish kerak:

Jadval va qator uzilishlari ikki tirnoq ichida

Ikki tirnoq ichidagi teskari chiziq nafaqat qo'shtirnoq va o'zidan, balki boshqa belgilardan ham qochish imkonini beradi. Eng mashhurlari tab (TAB tugmachasini bosganingizda bo'sh joy) va satr uzilishi. Ular shunday ko'rinadi:

Quyidagi skriptni yozing:
1. Game qiymati bilan $type o'zgaruvchisini yaratadi.
2. "World of Warcraft" qiymatiga ega $name o'zgaruvchisini yaratadi (tirnoqlar bilan).
3. Teg ichida ikkala o'zgaruvchini ham ko'rsatadi

. O'zgaruvchilar orasida bo'sh joy bo'lishi kerak.

String turining qiymatlari matn satrlari (qisqa uchun satrlar). Satr - bu nol yoki undan ortiq belgilar ketma-ketligi. Belgilarga harflar, raqamlar, tinish belgilari, maxsus belgilar va bo'shliqlar kiradi.

Satrni to'rt xil usulda aniqlash mumkin:

  • qo'sh tirnoq
  • yagona tirnoq
  • heredok sintaksisi
  • nowdoc sintaksisi

Ikki tirnoqli qator

Ikki tirnoqli qator:

Ikki tirnoqli satrlarda qochish ketma-ketliklaridan foydalanishingiz mumkin. Boshqarish ketma-ketligi— bu matn chiqishini formatlash uchun mo‘ljallangan maxsus belgilar. PHP da quyidagi qochish ketma-ketliklari mavjud:

Ikki tirnoqli satrlarning asosiy xususiyati satrlar ichidagi o'zgaruvchilarni boshqarish qobiliyatidir.


Dollar belgisi: \$";

Ikki tirnoq ichiga olingan satrlar bitta tirnoqli belgilarni o'z ichiga olishi mumkin:

Echo "Yagona tirnoq: "";

Bitta tirnoq ichidagi satr (apostrof)

Bitta tirnoq ichidagi satr:

$str = "String"; echo "Bir katta chiziqni o'qishni osonlashtirish uchun bir nechta kichik qatorlarga bo'lish mumkin.";

Ikki tirnoqli satrlar va heredok sintaksisidan farqli o'laroq, bitta qo'shtirnoq ichiga olingan o'zgaruvchilar va boshqaruv ketma-ketliklari (bitta istisno bilan) qayta ishlanmaydi. Bu ular oddiy qator belgilar sifatida talqin qilinishini anglatadi:

$son = 10; echo "Raqam: $num
Dollar belgisi: \$";

Bitta qo'shtirnoq ichiga olingan qatorda bitta qo'shtirnoqdan foydalanish imkoniyatiga ega bo'lish uchun ularni teskari chiziq (\") yordamida chetlab o'tish kerak. Agar teskari chiziqning o'zini yozish kerak bo'lsa, uni takrorlash kerak (\\):

Echo "Ichkarida \"bitta\" tirnoqlardan foydalaning"; echo "Teskari chiziq: \\";

Bitta tirnoq ichiga olingan satrlar ikki tirnoqli belgilarni o'z ichiga olishi mumkin:

Echo "Ikkita tirnoq: "";

Heredok sintaksisi

Heredok sintaksisi satrlarni yozishning muqobil usulidir.

Heredoc sintaksisi yordamida aniqlangan qator qo'sh tirnoq ichiga olingan qator bilan bir xil ishlaydi. Heredok va qo'sh tirnoqli satr o'rtasidagi farq shundaki, Heredok bilan qo'sh tirnoqlardan qochishning hojati yo'q.

Heredok sintaksisi uchta belgidan boshlanadi<<< , после которых должен быть указан произвольный идентификатор (назовём его открывающим). Идентификатор может быть указан как в двойных кавычках, так и без них. To'g'ridan-to'g'ri identifikatordan keyin yangi qator bo'lishi kerak, identifikatordan keyin yangi qatordan boshqa belgilar bo'lmasligi kerak, aks holda xatolik yuzaga keladi. Keyinchalik satr tarkibining o'zi keladi. Satr tarkibidan keyin alohida satrda yopilish identifikatori ko'rsatilishi kerak (keyingi kabi<<<). Перед ним и после него не должно быть никаких пробелов или других символов, за исключением точки с запятой. Если это правило нарушено, то считается, что закрывающий идентификатор отсутствует и будет вызвана ошибка:

<<

Nowdoc sintaksisi

Nowdoc sintaksisi, Heredok singari, satrlarni yozishning muqobil usulidir.

Nowdoc sintaksisi yordamida aniqlangan satr bitta tirnoq ichiga olingan qator bilan bir xil ishlaydi. Nowdoc va bitta tirnoqli satr o'rtasidagi farq shundaki, Nowdoc bilan bitta tirnoqdan qochishning hojati yo'q.

Nowdoc sintaksisi Heredokga o'xshaydi, yagona farq shundaki, ochilish identifikatori bitta tirnoq ichiga olinishi kerak:

$son = 10; aks-sado<<<"some_id" Число: $num some_id;

Stringlarda o'zgaruvchilar bilan ishlash

Satrlardagi o'zgaruvchilar bilan ishlash uchun ikki xil sintaksis mavjud: oddiy Va qiyin.

Oddiy sintaksis- bu o'zgaruvchining nomi satrda ko'rsatilgandek ko'rsatilganda.

Tarjimon dollar belgisiga duch kelganda, u barcha keyingi belgilar o'zgaruvchi nomidagi haqiqiy belgilar yoki yo'qligini ketma-ket tekshirishni boshlaydi. Shunday qilib, haqiqiy o'zgaruvchi nomini yaratish uchun u iloji boricha ko'proq belgilarni oladi:

$str = "Dunyo!"; echo "Salom $str";

Murakkab sintaksis- bu o'zgaruvchi nomi jingalak qavslar ichiga olinganda.

O'zgaruvchini satrda qayta ishlash uchun tarjimon iloji boricha ko'proq belgilarni ushlaganligi sababli, tarjimon o'zgaruvchi nomi qayerda tugashini mustaqil ravishda aniqlay olmaydigan holatlar mavjud:

$sport1 = "bo'ladi"; $sport2 = "oyoq"; echo "Menga $sport1ball va $sport2ball yoqadi";

Bunday holda, istalgan natijaga erishilmaydi, chunki tarjimon $sport1 ni mavjud bo'lmagan $sport1bol o'zgaruvchi nomining bir qismi deb hisoblaydi.

Tarjimonga oʻzgaruvchi nomi qayerda tugashini aniq aytish uchun oʻzgaruvchi nomini jingalak qavslar ichiga olish kerak:

$sport1 = "bo'ladi"; $sport2 = "oyoq"; echo "Menga ($sport1)bol va ($sport2)bol yoqadi.";

Dollar belgisi jingalak qavsdan oldin yoki keyin joylashtirilishi mumkin:

$sport1 = "bo'ladi"; $sport2 = "oyoq"; echo "Menga $(sport1)bol va ($sport2)bol yoqadi.";

Birlashtirish

Birlashtirish - bu ikki yoki undan ortiq qatorlarni bitta kattaroq qatorga birlashtirish. Birlashma - bog'lash operatori yordamida sodir bo'ladi. (nuqta). Birlashtirganda, har bir keyingi qator oldingisining oxiriga qo'shiladi:

Satr bilan birlashtirilgan har qanday turdagi qiymat bilvosita satrga aylantiriladi va keyin birlashtiriladi:

"; echo "Raqam: " . 1; ?>

Satrlarni formatlash uchun qanday turdagi qo'shtirnoqlardan foydalanishim kerak - apostrof yoki klassik qo'sh tirnoq?

Keling, PHP tilidagi qo‘sh va bitta qo‘shtirnoq o‘rtasidagi farqni ko‘rib chiqamiz va qaysi biri qachon ishlatilishini misollar orqali aniqlaymiz.

Bitta qo'shtirnoq ichiga olingan satrlarda topilgan maxsus belgilar uchun o'zgaruvchilar va qochish ketma-ketliklari qayta ishlanmaydi. Apostroflar bilan o'ralgan satrlar PHP tarjimoni tomonidan qo'sh tirnoq bilan o'ralgan o'xshash satrlarga qaraganda ancha tezroq qayta ishlanadi.

Buning sababi oddiy: PHP tarjimoni qo'shimcha ravishda qo'sh tirnoq ichidagi satrlarni o'zgaruvchilar mavjudligini tekshiradi va agar ular topilsa, o'zgaruvchi nomi o'rniga uning qiymati satrga kiritiladi. Ammo apostroflar bilan o'ralgan satr tarjimon tomonidan oddiy matn sifatida qabul qilinadi va PHP bu satrlarda hech qanday o'zgarishlarni amalga oshirmaydi. Menimcha, bitta tirnoq ichida satrlarni qayta ishlash har qanday holatda ham tezroq bo'lishi aniq.

Birinchidan, satrni qanday aniqlashni tasvirlab beramiz va keyin bitta tirnoq ichida satrlarni qayta ishlash qanchalik tezroq bo'lishini tekshiramiz.

Satrni aniqlashning eng oddiy usuli - uni bitta qo'shtirnoq (") ichiga olishdir. Bitta tirnoqli satr ichida bitta qo'shtirnoqdan foydalanish uchun ular oldiga teskari chiziq (\), ya'ni qochish kerak. Agar teskari chiziq kelishi kerak bo'lsa. bitta qo'shtirnoq oldidan yoki satr oxirida bo'lsangiz, uni ko'paytirishingiz kerak bo'lsa, boshqa belgidan qochishga harakat qilsangiz, teskari chiziq ham chop etiladi.

Bitta tirnoqlardan foydalanishga misol:
// Chiqish: oddiy qator
echo "Oddiy string";
// Chop etish: Men shu yerdaman
echo "Men shu yerdaman";
// Chiqish: Bu kiritilmaydi: \n yangi qator
echo "Bu kiritilmaydi:\nyangi qator";
// Chiqishlar: $example o'zgaruvchisi ham almashtirilmaydi
echo "$misol o'zgaruvchisi ham almashtirilmaydi";

Agar satr qo'sh tirnoq (") ichiga olingan bo'lsa, PHP maxsus belgilar uchun ko'proq qochish ketma-ketliklarini taniydi va qatordagi o'zgaruvchi nomining qiymatini almashtiradi. Bitta tirnoqlarda bo'lgani kabi, qo'sh qo'shtirnoq ichida qo'sh tirnoqlarni ishlatish uchun qo'shtirnoq, ular oldiga teskari chiziq belgisi (\) qo'yilishi kerak.
// Chiqish: oddiy qator
echo "Oddiy string";
Qo'sh tirnoqlardan foydalanishga misol:
// Natijalar: "Snowdrop" kompaniyasi
echo "Kompaniya \"Qor tomchisi"";
// Chiqish: Bu yangi qatorga olib keladi
echo "Bu yangi qatorga o'tadi \n";
// Chiqish: o'zgaruvchi almashtiriladi
echo "O'zgaruvchi $misol";

Shuni ham yodda tutish kerakki, "\n" (yangi qator), "\r" (karetaning qaytishi) ketma-ketligi HTML emas, oddiy matn uchun. Shunday qilib, siz brauzerda o'zgarishlarni ko'rmaysiz (faqat sahifaning manba kodida).
Keling, bitta tirnoq qo'sh tirnoqqa qaraganda qanchalik tezroq ekanligini bilib olaylik. O'lchovlar uchun biz qisqa test skriptini yozamiz va agar siz uni o'zingiz sinab ko'rsangiz, shaxsiy kompyuteringiz yoki serveringiz uskunasiga bog'liq bo'lgan natijalar boshqacha bo'lishini darhol ta'kidlaymiz.
// Loop boshida vaqt tamg'asini qaytaring
$start = microtime(to'g'ri);
// 1 million iteratsiya uchun tsikl yarating< 1000000; $i++) {
uchun ($i = 0; $i
}
$text = "Bu erda belgilar qatori";
// Sarflangan vaqtni hisoblang

$vaqt = (mikrovaqt(to'g'ri) - $start);
Natija: 0,09 soniya.

Agar biz bitta tirnoqni qo'sh tirnoq bilan almashtirsak:
$text = "Bu erda belgilar qatori";
Natijada 0,10 soniya bo'ladi.

Ko'rib turganingizdek, matn satrlaridan foydalanganda, bajarilish vaqtidagi farq juda kichik, hatto u umuman yo'q deb aytish mumkin. O'yin-kulgi biz satr va o'zgaruvchini birlashtirishga harakat qilganimizda boshlanadi.

$text = "Mana $i belgilar qatori";

yoki

Yagona tirnoq

$text = $i."Bu yerda belgilar qatori";

Natija taxminan: 0,27 soniya.

Farqi ancha sezilarli. O'zgaruvchilar qatorga qo'shilganda, birlashtirish va qo'sh tirnoqlar ishlashga aniq ta'sir qiladi.

Server kodni qayta ishlaganda, u o'zgaruvchilar, doimiylar va boshqalar uchun qo'sh tirnoqlarning barcha tarkibini tekshiradi. Bu vaqt talab etadi. Server esa bitta qo'shtirnoq orasidagi narsalarni tayyor matn sifatida qayta ishlaydi va u erda nima borligiga ahamiyat bermaydi. Yagona va qo'sh tirnoqlarning ishlashi o'rtasidagi farq juda kichik, lekin agar siz juda yuklangan loyihani ishlab chiqayotgan bo'lsangiz, bir necha millisekundlik saqlangan allaqachon g'alaba.:

Ikkita tirnoq

Hech kimga sir emaski, PHP-da qo'shtirnoqlar bitta yoki ikkita bo'lishi mumkin. Keling, qachon qo'shtirnoq belgilaridan foydalanish ko'proq mos kelishini bilib olaylik.

Satrni aniqlashning eng oddiy usuli - matnni bitta tirnoq ichiga olish.

Qo'sh tirnoq ichiga olingan qator maxsus belgilar uchun ko'pgina qochish ketma-ketliklarini taniydi.

Eng muhim farq shundaki, qo'sh tirnoq o'zgaruvchilar bilan ishlaydi.

Qo'sh tirnoqlardan foydalanishga misollar:

Keling, ikkita tirnoqli satrlar o'zgaruvchilarni boshqarishiga e'tibor qarataylik.

Satrga ishlov berilganda nima bo'ladi? Tarjimon o'zgaruvchilar uchun har bir qatorni qo'sh tirnoq bilan tekshiring, ya'ni. majburiy tahlil qilish sodir bo'ladi, bu qo'shimcha vaqtni oladi. Ha, ko'pincha bu bir soniya, lekin haqiqatning o'zini tushunish kerak. Ya'ni, agar siz bitta satrni qayta ishlashni turli tirnoqlar bilan solishtirsangiz (albatta, o'zgaruvchilarsiz), unda bitta tirnoqli satr, albatta, tezroq qayta ishlanadi.

Hisob-kitoblar

Men ProfiPHP veb-saytida ushbu mavzu bo'yicha qiziqarli hisob-kitoblarni topdim. Muallif oddiy skript yozgan, uning yordamida u satrlarni qayta ishlash vaqtini hisoblagan.

© 2024 ermake.ru -- Kompyuterni ta'mirlash haqida - Axborot portali