• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
منابع غیر مستقیم به متغیر ها
#1
درود بر شما خواننده گرامی،

در PHP 5 ویژگی منابع غیر مستقیم به متغیرها را دیدم و لازم دونستم که در موردش کمی توضیح بدم. البته اطمینان ندارم مختص ویرایش 5 برای php باشه! دیگه ببخشید Blush

شما یک متغیر با نام name ایجاد می کنید و مقدار Alireza رو بهش میدید و در زیر آن یک متغیر دیگر اما با دو "$" یا همان "dollar name" با مقدار Saeed ایجاد می کنید و در نهایت متغیر Alireza را خارج کنید. کدش رو در زیر نوشتم.

کد پی‌اچ‌پی:
<?php

$name 
"Alireza";
$
$name "Saeed";

print 
$Alireza;

?>

اگر دقت کنید خروجی Saeed خواهد بود. این به این دلیل است که شما مقدار متغیر name را تعویض کردید اما چرا از متغیر name خروجی نگرفتیم؟! به این دلیل که خطا به جای خروجی صحیح دریافت خواهیم کرد. اینطوری میشه که شما یک متغیر Alireza ایجاد می کنید. شما هرچقدر که بخواهید می تونید مقادیر را با افزودن "$" تغییر دهید اما نکته ای که باید بهش توجه داشت، این هست که بطور ساده براتون بگم، اون متغیری که می خواهید ایجاد کنید رو فقط بر روی متغیر بعدی خودش پشتیبانی می کنه. بگذارید با سورس بهتون بگم.

کد پی‌اچ‌پی:
<?php

$name 
"Alireza";
$
$name "Saeed";
$$
$name "IranPHP";
$$$
$name "Eskandarpour";

print 
$IranPHP;

?>

اگر شما کد بالا رو تست کنید، خروجیش Eskandarpour خواهد بود و اما اگر بجای $IranPHP بگذاریم $Saeed خروچیش IranPHP خواهد بود. حالا متوجه منظورم شدید؟ اینم اضافه کنم که نمی تونید از متغیر اولی خروجی آخری بخواید ها! و همینطور اگر خروجی آخری رو نیز بخواید آخرین اولی یا وسطی و ... رو نشون نمیده بلکه خطا نشون میده!!!!!
غایب
  پاسخ
تشکر شده توسط : php parvane molana k2-4u admin Y.P.Y
#2
در کل به این روشی که علیرضا توضیح داد میگن متغییر های پویا که خیلی جا ها بدرد می خوذت و کار رو خیلی راحت تر می کنن .
  پاسخ
تشکر شده توسط :
#3
بیشتر باعث گنگی کد می شه تا پویا شدن. البته به نظر من
  پاسخ
تشکر شده توسط : molana
#4
(۱۳۸۹ فروردین ۱۲, ۰۶:۵۴ ب.ظ)hidensfot نوشته: بیشتر باعث گنگی کد می شه تا پویا شدن. البته به نظر من

نظر شما محترم هست آقا محمد اما خوب این یک روش بسیار کارآمد و ساده از array است و همینطور باعث میشه از نوشتن متغیر های اضافی که تنها یک مقدار می پذیرند جلوگیری بشه که در نتیجه فایل ما سبک تر خواهد شد و ...
غایب
  پاسخ
تشکر شده توسط : molana
#5
این روش برای مورد های کوچک و شاید خاص کاربرد داشته باشه. اما به هیچ عنوان نمی تونه جای کاربرد آرایه رو بگیره. پی اچ پی بی ارایه یعنی هیجی
  پاسخ
تشکر شده توسط : php
#6
(۱۳۸۹ فروردین ۱۲, ۱۱:۳۶ ب.ظ)zoghal نوشته: این روش برای مورد های کوچک و شاید خاص کاربرد داشته باشه. اما به هیچ عنوان نمی تونه جای کاربرد آرایه رو بگیره. پی اچ پی بی ارایه یعنی هیجی

صالح جان بنده هم عرض کردم که یک کار ساده array را این روش انجام میدهد!
غایب
  پاسخ
تشکر شده توسط :
#7
(۱۳۸۹ فروردین ۱۳, ۰۲:۴۱ ق.ظ).v0id نوشته: صالح جان بنده هم عرض کردم که یک کار ساده array را این روش انجام میدهد!

والا من هر چی فکر می کنم نمی تونم این جمله رو بفهمم. تفاوت زیادی بین آرایه و متغیر هست.

در مورد خود این موضوع این سوال هست که آیا اصلا نیازی هست که یک متغیر با مقدار درون متغیر دیگه ای داشته باشیم ؟ چه نیازی هست ؟ در مورد حجم حافظه هم فکر نمی کنم تاثیر چندانی داشته باشه. چون در هر دو حالت متغیر ها تعریف می شوند.
  پاسخ
تشکر شده توسط :
#8
کد پی‌اچ‌پی:
<?php

$name 
"Alireza";
$
$name "Saeed";

print 
$Alireza;

?>
این قابلیت در php 4 هم بود !
خیلی وقت ها هم کار آدم رو راه میندازه
------
ولی نمیدونم میشد بیشتر از یک $ گذاشت یا نه
---------

تفاوت متغییر و آرایه اینه که
آرایه . بیشتر از یک عضو داره Big Grin
  پاسخ
تشکر شده توسط :
#9
نقل قول:ولی نمیدونم میشد بیشتر از یک $ گذاشت یا نه
اگه یکدونه بگذاری که خطا نشونت میده برادر!

نقل قول:این قابلیت در php 4 هم بود !
عرض کردم که مطمئن نیستم حتما برای PHP 5 باشه!

نقل قول:والا من هر چی فکر می کنم نمی تونم این جمله رو بفهمم. تفاوت زیادی بین آرایه و متغیر هست.
کار ساده این روش مثل یک کار پیشرفته آرایه می مونه این صد دفعه! مثلا با کمک آرایه به یک متغیر چندین مقدار میدیم و هر کدوم رو خواستیم در هرجا فراخوانی می کنیم و این روش هم درست مثل همونه به یک متغیر چندین مقدار جدا میدیم که هرجا خواستیم فراخوانی کنیم.

نقل قول:در مورد خود این موضوع این سوال هست که آیا اصلا نیازی هست که یک متغیر با مقدار درون متغیر دیگه ای داشته باشیم ؟ چه نیازی هست ؟ در مورد حجم حافظه هم فکر نمی کنم تاثیر چندانی داشته باشه. چون در هر دو حالت متغیر ها تعریف می شوند.
بهتره خودت روش فکر کنی و ببینی کجا میتونی ازش استفاده کنی.
غایب
  پاسخ
تشکر شده توسط :
#10
البته اینکار یک مشکلی رو داره و اونم اینه اگر داخل متغیر اولی یک رشته که با عدد شروع میشه وجود داشته باشه این باعث خطا میشه. در کل هر رشته ای که یک نام متغیر نامعتبر باشه اخطار میده.
البته برای آموزش خوبه ولی استفاده ازش یه ریسک هست. مخصوصا برای رشته هایی که ثابت نیستن و از ورودی ها میان
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان