یک سوال از php کار‌ها

xerror

Member
سلام دوستان
من یک php کار مبتدی هستم و تازه کار با php رو شروع کردم.
می‌خواستم بدونم چه طور میتونم محتوای یک متغیر که در یک تابع دارم رو در تابع دیگر فراخوانی کنم؟
PHP:
function test1 () {
$ali="test";
}
function test2 () {
echo $ali;
}
چه‌جوری می‌تنوم چنین کاری انجام بدم؟
 
آخرین ویرایش:

xerror

Member
ولی متاسفانه کار نکرد:sad:

من به این صورت نوشتم.
PHP:
<?
function test1 () {
    global $ali;
  echo $ali; 
}
function test2 () {
    global $ali;
   $ali="test";
}

?>
 

xerror

Member
یه نکته دیگه رو هم اضافه کنم که شاید مهم باشه
این دو تابع هر دو تو یه تابع دیگه هستند یعنی:
PHP:
function test () {
function test1 () {}
function test2 () {}
}
 

hidensoft

Member
از روش Oop استفاده کنید . (اینو واسه این گفتم که دوتا تابع رو توی هم دیگه استفاده نکنید)
PHP:
<?php
class Classname{
	public $name;	
	function setname($input){
		$this->name = $input;
	}
	function printname(){
		echo("$this->name");
	}
}
$obj = new Classname();
$obj->setname("myname");
// For Print $name U can Using This Code
echo $obj->name ;
// Or This
$obj->printname();
// OutPut
// myname
?>
 

peyman1987

Member
ولی متاسفانه کار نکرد:sad:

من به این صورت نوشتم.
PHP:
<?
function test1 () {
    global $ali;
  echo $ali; 
}
function test2 () {
    global $ali;
   $ali="test";
}

?>

دوست من اول درست تست کنين بعد روي کد اساتيد ايراد بزارين.
شما اول متغير رو چاپ ميکنين بعد مقداردهيش ميکنين؟؟؟؟؟
بعد ميگين هيچي چاپ نشد؟؟؟؟؟
شما اول بايد test2 رو فراخواني کنين بعد test1 رو.
 

xerror

Member
در استاد بودن اساتید که شکی نیست
من فقط مشکلم رو مطرح کردم
اگر هم به کسی بی احترامی کردم همین جا از همشون معذرت می‌خواهم
مگه ‌جابه‌جایی function ها هم مهمه یعنی یکی بالا باشه یکی پائین؟؟؟
 

para2x

Member
ببخشيد من كامل مي كنم
دوست من اسكوپ يه متغير تويه يه تابع هست ، حالا شما اين متغير رو گلوبال كردي كه تويه همه جا استفاده كني ، پس اول اون فانكشني رو كه متغير رو مقدار دهي كردي بايد فراخوني كني ، تا متغير يه مقداري بگيره و گلوبال بشه بعد شماديگه اون متغير رو با اون مقدار همه جا داري
 

peyman1987

Member
در استاد بودن اساتید که شکی نیست
من فقط مشکلم رو مطرح کردم
اگر هم به کسی بی احترامی کردم همین جا از همشون معذرت می‌خواهم
مگه ‌جابه‌جایی function ها هم مهمه یعنی یکی بالا باشه یکی پائین؟؟؟

نه دوست عزيز شما به کسي توهين نکردي :wink:

بله خيلي هم مهمه جريان برنامه به همين بستگي داره.
اون تابعي که اول صدا زده بشه دستوراتش قبل از دستورات تابع بعدي اجرا ميشن.

موفق باشين
 

xerror

Member
اون تابعي که اول صدا زده بشه دستوراتش قبل از دستورات تابع بعدي اجرا ميشن.
این رو می‌دونستم منظور من قرار گیری خود توابع بود نه صدا زدنشون
پیرو حرف دوستان اضافه کنم که یکی از دوستان گفت باید register_globals هم توی php.ini روشن باشه که این کار رو هم کردم و apache رو هم reset کردم ولی درست نشد. :cry:
 

peyman1987

Member
منم نگفتم قرارگيري گفتم فراخواني :دي
در ضمن هيچ ربطي به register_globals نداره
دوست من شما همون کدي رو که جناب حسيني دادن تست کنين کاملا درسته.
 

peyman1987

Member
نخير نيازي به تنظيم php.ini نيست.
کد شما بايد به اين صورت باشه .
PHP:
function test1()
{
global $string;
$string = "ali";
{
function test2()
{
global $string;
echo $string;
}

test1();
test2();

اين کد الان مثل ساعت کار ميکنه. اگه بازم مشکل داشتين کد کامل خودتون رو بزارين.
 

miladmovie

Active Member
در استاد بودن اساتید که شکی نیست
من فقط مشکلم رو مطرح کردم
اگر هم به کسی بی احترامی کردم همین جا از همشون معذرت می‌خواهم
مگه ‌جابه‌جایی function ها هم مهمه یعنی یکی بالا باشه یکی پائین؟؟؟
شما بهتره فعلا کتابی بخونید که به شما کمک کنه تا اصول برنامه نویسی رو یاد بگیرید

نه این کتاب های PHP که مستقیم میره سره کد

موفق باشید
 

xerror

Member
دوستان مشکلم حل شد
مشکل از جای دیگه ای بود که پس از trace کردن فهمیدم.
 

جدیدترین ارسال ها

بالا