پرش به محتوا

کار با Complex (curly) syntax در PHP

توی زبون های مختلف وقتی با رشته ها کار میکنیم ممکنه بخوایم یه استرینگ رو مثلا اکو کنیم یا هر کار دیگه ای و داخل اون استرینگ یه متغیر هم باشه. توی PHP میتونید رشته رو توی دبل کوتیشن بذارید و رشته بصورت رندر شده داخل استرینگ نشون داده میشه. یه همچین چیزی منظورم هست:

<?php
$name = "Hamid";
echo "My name is $name";

// output: My name is Hamid

ولی یسری مواقع هست که شما میخواید از یک آرایه ی Associative مقدار بکشی بیرون. فرض کنید از یه ریکوعست داده اومده واستون و میخواید داده ای که از $_GET اومده رو مستقیما توی رشته چاپ کنید. (این یه مثاله و قطعا توی این موارد بهتره validation انجام بشه).

<?php

echo "My name is $_GET['name']";

// output: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in strings.php on line 3

توی همچین دو تا راه سخت دارید. یکی از سختا اینه که مقدار رو بیرون از رشته بگیرید داخل یه متغیر ذخیره کنید و بعد اونو بذارید داخل رشته که یدونه الکی متغیر هدر میره:

<?php

$name = $_GET['name'];
echo "My name is $name";

راه دوم سخت تر اینه که رشته ها رو بچسبونید به متغیر به این صورت که کار رو یکم سخت میکنه:

<?php

echo "My name is $name" . $_GET['name'];

ولی راه قشنگتر اینه که از Complex (curly) syntax استفاده کنید که در میشه آرایه های Associative هم توی استرینگ مستقیم رندر کرد.

<?php

$user = [
    'name' => 'Hamid',
    'age' => 29
];
echo "My name is {$user['name']} and I am {$user['age']} years old.";

// output: My name is Hamid and I am 29 years old.

میبینید که چقد شیک و ساده میشه اینکارو کرد توی ورژن های جدید PHP.

شاد باشید 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *