Static Variables in PHP المتغيرات الثابته

عند تعريف متغير على انه استاتك تكون قيمة المتغير ليست القيمية الابتددائية انما هى اخر قيمة للمتغير اين يتم حفظ قيمة هذا المتغير عند تفيذ هذا الكود

<?php

function keep_track() {

STATIC $count = 0;

$count++;

print $count;

print "

";

}

keep_track();

keep_track();

keep_track();

?>

يكون الناتج

1

2

3

فى اى مكان يتم حفظ المتغير ؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

هل هذا سؤال ؟

بكل تاكيد اين يتم حفظ القيم لا توجد حلقة تكرارية جرب الكود

لم افهم جيدا ما تقصده ان كنت تقصد الإستفسار عن متغيرات static في داخل الدوال ؟ هي تجعل الدوال تتذكر المتغير لاتكتب static لتعرف ما اقصده ستجد الدالة دائمًا تخرج 1

وان عٌورفت المتغيرات فانها لاتعرف من جديد في كل مرة اي ان كتبت

static $count = 5;
 echo $count;
$count = 4;
echo $count;
static $count = 5;
echo $count;

فان $count لن يعاد تعريفها اذا كتبت قبلها static لانها عروفت كstatic من قبل

وستجد الخارج لك 544 كأنك تقول اجعل count يساوي 5 ان لم يكن مٌعرف

وان كنت تقصد زيادة 1 كل مرة هذا لان ++ تعني +1 وفي حلقة التكرار

for($i=0;$i<=5;$i++)

تعني اجعل المتغير i قيمته 0 وكرر الكود طالما i اصغر من 5 وفي كل دورة اضف 1 الى المتغير i

اتمنى ان اكون فهمت ما تقصده .

فى الكود الذى كتبه فى المرة الاولى تكون قيمة keep_track(); 1 اذا قمت بستدعاء الدالة مرة اخرى تكون القيمة بزيادة واحد كما هو موضع اى تصبح 2 وااذا تم استعدها تقوم الدالة بحفظ القيمة الاخيرة وليس القيمة الابدائية اين يتم حفظ هذة القيمة حتى يتم الرجوع اليها مع العلم ان القيمة الابتدائية هى صفر

بحثت فى الانترنت ووجدت هذة الاجابه :

Where your statics go depends on if they are 0 initialized or not. 0 initialized static data goes in .BSS (Block Started by Symbol), non 0 initialized data goes in .DATA