إخراج جميع المتغيرات في php. نطاق متغير PHP. كل ما كنت تريد معرفته ولكن كنت تخشى السؤال. المتغيرات الثابتة: توجد في مكان قريب
متغيرات phpهو نوع من حاوية المعلومات التي يمكن أن تحتوي على أنواع مختلفةالبيانات (نصوص وأرقام ومصفوفات وما إلى ذلك). بشكل عام ، تسمح لك المتغيرات بإنشاء وتخزين وتعديل والوصول بسرعة إلى المعلومات المحددة فيها في المستقبل.
كيفية إنشاء متغير في PHP
في البداية ، تحتوي المتغيرات على العلامة $ (بالدولار) - تسمية استخدام المتغير ثم الحروف الأبجدية اللاتينية(من الألف إلى الياء والصغيرة والكبيرة) ، في النهاية يمكن أن تحتوي على أعداد... أيضًا ، يُسمح للاسم باستخدام شرطة سفلية (ليس في النهاية).كيف يمكن تسمية المتغيرات:
فار
متغير $
سنة 1945
_ متغير
كيف لا يمكن استدعاء المتغيرات:
1 دولار - يتكون فقط من رقم
متغير $ 1 - لا يمكنك بدء اسم متغير برقم
$ / var - يُسمح فقط للشرطات السفلية بأحرف إضافية _
متغير $ - السيريلية مسموح بها بواسطة وثائق php لكن لا ينصح بها
$ var iable - لا يمكن استخدام المسافات
يتم تعيين قيمة لكل متغير. لتعيين قيمة ، استخدم العلامة =
(يساوي). أثناء معالجة البرنامج النصي ، يمكن أن تتغير قيمة المتغير بشكل متكرر حسب الظروف المختلفة.
$ city = "موسكو" ؛ // تم تخصيص سلسلة للمتغير $ city (بين علامتي الاقتباس) بقيمة موسكو
سنة = 1147 دولار ؛ // وتم تخصيص القيمة الرقمية للمتغير $ year 1147
?>
$ name = "ألكسندر" ؛
اسم $ = "أليكسي" ؛
صدى "$ name، $ Name" ؛ // يعرض "ألكسندر ، أليكسي"
?>
مخرجات PHP المتغيرة
بشكل منفصل ، يجب أن تفكر في كيفية عرض المتغيرات باستخدام عوامل الإخراج، العمل الذي درسناه في الدرس الأخير ، إنشاء صفحة PHP. عوامل الإخراج. ... سأقدم أدناه عددًا من الأمثلة التوضيحية مع التعليقات.// هذه هي الطريقة التي نخصص بها قيمًا للمتغيرات
$ name1 = "أليكسي" ؛
$ name2 = "ألكسندر" ؛
// عرض المتغيرات
صدى $ name2؛ // الإخراج: الكسندر
صدى "name1 هو $ name1" ؛ // name1 هو Alexey
// عند استخدام علامات الاقتباس الفردية ، يكون الناتج
// اسم المتغير وليس القيمة
صدى "name1 هو $ name1" ؛ // يطبع: name1 هو $ name1
// يمكنك ببساطة عرض قيم المتغيرات
صدى $ name1؛ // أليكسي
echo $ name1، $ name2؛ // أليكسي الكسندر
صدى $ name1. "". $ name2؛ // أليكسي الكسندر
صدى "$ name1، $ name2"؛ // أليكسي ، ألكساندر
صدى صوت<<
أسطر متعددة مع استبدال المتغير $.
نهاية؛
العمليات المتغيرة PHP
العمليات الحسابية في PHPفي حالة القيم الرقمية ، يمكنك إجراء عمليات حسابية: الجمع والطرح والضرب وما إلى ذلك.
- $ أ(نفي) قم بتغيير علامة $ a.
$ a + $ b(بالإضافة) مجموع $ a و $ b.
$ a - $ b(طرح) الفرق بين $ a و $ b.
$ a * $ b(الضرب) حاصل ضرب $ a و $ b.
$ أ / $ ب(القسمة) حاصل قسمة $ a على $ b.
$ a٪ $ b(تقسيم modulo) العدد الصحيح المتبقي من $ a مقسومًا على $ b.
لنلق نظرة على الأمثلة
$ أ = 2 ؛ // ملاحظة ، في حالة الأرقام ، لا يتم استخدام علامات الاقتباس
ب = 3 ؛ // ملاحظة ، في حالة الأرقام ، لا يتم استخدام علامات الاقتباس
النتيجة بالدولار = $ a + $ b ؛ // إضافة المتغيرات
صدى $ نتيجة؛ // سيطبع 5
النتيجة بالدولار = ب دولار - أ ؛ // إضافة المتغيرات
صدى $ نتيجة؛ // سيخرج 1
الزيادة والنقصان في PHP
ستكون هذه العمليات مفيدة بشكل أساسي عند بناء الحلقات ، والتي سنتحدث عنها بعد قليل.
اختصار- العوامل المكتوبة قبل المتغير ( - $ أ; ++ دولار أ). تُرجع قيمة المتغير قبل التغيير.
بوستفيكس- العوامل المكتوبة بعد المتغير ( $ أ--; $ أ--). إرجاع القيمة المعدلة للمتغير.
زيادة راتب- زيادة القيمة.
إنقاص- إنقاص القيمة.
++ دولار أزيادة البادئة. تزيد $ a بمقدار واحد وتُرجع قيمة $ a.
++ a دولارزيادة Postfix. لعرض قيمة $ a ثم زيادة $ a بمقدار واحد.
- $ أإنقاص البادئة. ينقص $ a بمقدار واحد ويعيد قيمة $ a.
$ أ--إنقاص Postfix. تُرجع قيمة $ a ثم تنخفض $ a بواحد.
صدى صوت "
زيادة Postfix
";$ أ = 5 ؛
صدى "يجب أن يكون 5:". ++ a دولار. "\ ن"؛
صدى صوت "
زيادة البادئة
";$ أ = 5 ؛
صدى "يجب أن يكون 6:". ++ دولار أ. "\ ن"؛
صدى "يجب أن يكون 6:". $ أ. "\ ن"؛
صدى صوت "
إنقاص Postfix
";$ أ = 5 ؛
صدى "يجب أن يكون 5:". $ أ--. "\ ن"؛
صدى صوت "
إنقاص البادئة
";$ أ = 5 ؛
صدى "يجب أن يكون 4:". - $ أ. "\ ن"؛
صدى "يجب أن يكون 4:". $ أ. "\ ن"؛
?>
عمليات تخصيص PHP
المشغل الأساسييشبه =
... للوهلة الأولى ، قد يبدو أن هذا المشغل متساوٍ. في الحقيقة، ليس هذا هو الحال. في الواقع ، يعني عامل التخصيص أن المعامل الأيسر مضبوط على قيمة التعبير الأيمن ، (أي أنه مضبوط على القيمة الناتجة). عوامل التشغيل مجتمعة- هذه عوامل تسمح لك باستخدام القيم السابقة للمتغيرات للعمليات اللاحقة (إلحاق متغير سلسلة (مع نص) أو إضافة قيم رقمية).
$ أ = (ب = 2) + 4 ؛ // النتيجة: تم ضبط $ a على 6 ، وتم ضبط $ b على 2.
$ أ = 2 ؛
$ a + = 3 ؛ // يعين $ a إلى 5 ، على غرار الكتابة: $ a = $ a + 3 ؛
$ b = "مرحبًا" ؛
$ b. = "سلام!"؛ // يعين $ b على "Hello World!" كما يفعل $ b = $ b. "هناك!"؛
هناك أيضا عمليات المقارنةو دعابة الدماغلكن سنتحدث عنها في الدروس القادمة. سأحاول ألا أخافك بكمية كبيرة من المعلومات على الفور!)
متابعة السؤال المطروح مسبقًا بتفاصيل جديدة. لذلك: الموقع في السحابة ، السمة - الافتراضي 3.0 ، can_use_smarty = صحيح في الصفحات الفرعية للمنتج ، يعمل رمز Smarty جيدًا ، ومن الممكن الوصول إلى المتغيرات الضرورية وعرضها. في المنتج وصف ...
أهلا. في ملف checkout.html ، يوجد متغير $ cart_total = $ wa-> shop-> cart-> total () يخزن التكلفة النهائية. وكيف يمكن تقسيم هذه التكلفة إلى تكلفة التوصيل وتكلفة الطلب وإحضار كل ذلك إلى الموقع؟
هل هناك حل
مساء الخير قل لي ، pliz. لدي العديد من معرفات المنتج. على سبيل المثال ، 1،3،5. أريد الحصول على بيانات من $ wa-> shop-> product () عليها. أحتاج إلى تعيين متغير لبيانات المنتج لهذه المعرفات الثلاثة ، كيف أفعل ذلك؟ ليس قويا في ...
شيء من هذا القبيل (أكتب من الذاكرة ، أحتاج إلى التحقق) ($ all_my_products = $ wa-> shop-> products ()) (foreach $ all_my_products كـ $ ab)
($ ab | var_dump)(/ foreach)
أرغب في عرض 3 أسعار لواجهة محل في نفس الوقتهل هناك حل
أهلا! هناك 3 أسعار معيارية في IM: الشراء والتوسط والتجزئة. أيضًا ، بمساعدة المكوِّن الإضافي متعدد الأسعار ، قمت بإنشاء سعرين إضافيين للبيع بالجملة والتاجر. من الضروري أن تنعكس جميع الأسعار الثلاثة على جميع المشترين ، ولكن عندما يكون العميل ...
السؤال مغلق - الرجال يفعلونه بالفعل.
ما الاستعلام يمكنك عرض قائمة المتغيرات المتاحةهل هناك حل
أخبرني ما الذي يمكنك استخدامه في التطوير بجانب (debug) و (wa_dumpc ($ order)) لعرض المتغيرات المتاحة على الصفحة ، وما إلى ذلك ... ما التركيبات والاستعلامات التي يمكنك استخدامها في التطوير؟
(wa_tpl_vars) - المساعد الذي يسمح لك بعرض جميع المتغيرات التي تم تمريرها إلى القالب الحالي .... تمت مناقشة هذا السؤال بالفعل.
هل هناك حل
مرحبًا ، لا أفهم أي شيء في php ، هناك فقط المفهوم العام، حول الحلقات ، المصفوفات ، إلخ. أستخدم css و html و bootstap و uikit ، لأنني لا أفهم إطار العمل ، ولا يمكنني استخدامه على أكمل وجه ، ولا أفهم كيفية عمل الإجراءات ، ومكان الحصول عليها (مثل ...
انظر إلى وصف محرك قالب Smarty. يتم تمرير المتغيرات إلى القالب ، والتي يتم إنشاؤها وإعطاؤها للمستخدم. لمعرفة ما هو موجود في متغير ، يمكنك إخراجها بشكل منفصل ($ post | wa_print_r) (foreach $ post.plugins.before كـ $ plugin => $ output) ($ output) (/ foreach) باستخدام هذا الكود ، احصل على مصفوفة من المتغير $ post.plugins.before الذي يحتوي على المفتاح ($ plugin) والقيمة ($ إخراج كل القيم ($ output) إلى الصفحة.
+1 غير مقبول
لا تعمل المتغيرات من ورقة الغش عند إدراجها في إعلامات الطلب ، وكذلك في نموذج الطلب القابل للطباعة ...
تحسين السمة الافتراضية 2.0
من الضروري إجراء بعض التحسينات على التصميم الافتراضي 2.0 1. قم بمحاذاة ارتفاع صور المنتج في الفئات https: //yadi.sk/i/JazqloIg3ZQU ... 2. قم بتغيير الإخراج وصف مختصر، عرض حقول إضافية مع الرموز ...
مرحبًا ، أخبرني من فضلك كيف أعرض خصائص البضائع في السلة وفي الكتالوج (قائمة السلع) ، والتي يتم تحديدها يدويًا ، على سبيل المثال ، الحجم؟ 1) هناك بالفعل قيمة محددة في السلة. ملف النموذج القياسي (product.cart.html) .2) في قائمة المنتجات ...
الرجاء مساعدتي في اكتشافها. أين تجد المزيد من الوثائق الكاملة حول المحرك. على وجه التحديد ، أنا مهتم بجميع المتغيرات الذكية ، كيف يمكنني تخمين الكود الذي يجب أن أعرضه في كتالوج المنتج ، والعربة ، وصورة المنتج ، والخصائص ، وما إلى ذلك. و...
هل هناك حل
مساء الخير. كانت هناك حاجة لعمل العديد من القوائم المنسدلة. تصميم سمة التصميم باستخدام الذوق PRO ، صعدت إلى الشريط الجانبي / nav.html ، من خلال تكرار الرمز ، تمكنت من الحصول على القائمة الثانية ، ولكن منذ ذلك الحين أنها متطابقة ، بطبيعة الحال بدأت في الحكم عليه. بمجرد أني ...
يمكنك إنشاء قائمة منسدلة بسيطة دون حتى نسخ أجزاء من الكود المرتبط بنصوص سمة التصميم ، ولكن قم بإنشاء القائمة الخاصة بك. ها هو البرنامج النصي (الصقه في قالب القالب) 350 مللي ثانية هو وقت الظهور ، وإذا كنت ترغب في ذلك ، يمكنك إضافة المزيد من التأثيرات المختلفة. ثم تقوم بإنشاء كائنين من فئات مفتوحة والقائمة
حقل العنوان مركب (يتكون من حقول فرعية) ، لذلك إذا كنت تريد عرض عنصر فرعي معين ، فأنت بحاجة إلى تحديد أي واحد. على سبيل المثال ، مثل هذا ($ addr = $ wa-> user ("address")) City: ($ addr.data.city) يشير إلى العنوان الأول في مجموعة عناوين جهات الاتصال (يمكن أن يكون هناك عدة عناوين: عنوان التسليم ، عنوان الدافع ، العمل ، الشخصية ، إلخ.) الوثائق: http://www.webasyst.ru/developers/docs/features/contacts-app-integration/
+9
أيها الرفاق! واجهت مؤخرًا مشكلة العمل المركزي للمكونات الإضافية مع قوالب في سمات التصميم. أولئك. كانت غائبة ، وهناك بعض الإضافات التي تمت كتابتها: قم بإنشاء قالب في سمة التصميم ، ثم سيتم استخدامه وما إلى ذلك ... اتضح ...
هل هناك حل
لقد لاحظت أنه على الموقع (موقع التطبيق) ، حتى لا يتم الخلط بينه وبين المتجر ، لا يتم عرض الترميز على الصفحات. ذهبت إلى موقع webasyst ، كلهم بخير ، كيفية تنفيذه ، أين أدخل ما الكود؟ ولماذا ليس هو الافتراضي؟
الموقع - الصفحات - حدد صفحة وفي أعلى إعدادات الصفحة - قسم الشبكات الاجتماعية. إخراج كود php يوجد 3 ملفات رئيسية (index.php) ، ملف به جافا سكريبت وملف php. ملف php متصل بملف جافا سكريبت بهذه الطريقة var JSONReviewsGeneratorReference = "path to the php file" ؛ لكن اتضح أن كود php في المحرر لا يمكن استخدامه (على ... من فضلك قل لي من يعرف. لدي تصميم ذو ذوق 2. من الضروري في كتالوج البضائع ، الذي يظهر جميع السلع مع الاسم والسعر ، عرض الأسعار أعلاه والمقال الخاص بالمنتج المحدد. لقد اتصلت بمطور القوالب ، فأنا لا أعرف المتغير. كيف... منذ 12 عاما مسكتك قليلا احترس من: إذا قمت بإيقاف تشغيل RegisterGlobals وما يتصل بها ، ثم استخدم get_defined_vars () ، فقد ترى شيئًا مشابهًا لما يلي: مجموعة مصفوفة [_POST] => صفيف () ) مطبعة "
[GLOBALS] => صفيف
[GLOBALS] => صفيف
* العودية *
[_POST] => صفيف ()
[_GET] => صفيف ()
[_COOKIE] => صفيف ()
[_FILES] => صفيف ()
)
[_GET] => صفيف ()
[_COOKIE] => صفيف ()
[_FILES] => صفيف ()
?>
لاحظ أن $ _SERVER ليس موجودًا. يبدو أن php يقوم فقط بتحميل superglobal $ _SERVER إذا تم استخدامه في مكان ما. يمكنك القيام بذلك:". htmlspecialchars (print_r (get_defined_vars ()، true))."
"
;
مطبعة " ". htmlspecialchars (print_r ($ _SERVER، true))."
"
;
?>
ثم سيظهر $ _SERVER في كلتا القائمتين. أعتقد أنه "ليس مسككًا حقًا ، لأنه لن يحدث أي شيء سيء في كلتا الحالتين ، لكنه فضول مثير للاهتمام مع ذلك.
منذ 6 سنوات
نظرًا لأن get_defined_vars () يحصل فقط على المتغيرات عند النقطة التي تستدعيها الوظيفة ، فهناك طريقة بسيطة للحصول على المتغيرات المحددة ضمن النطاق الحالي.
// أعلى نص php الخاص بك
vars = get_defined_vars () ؛
// الآن افعل الأشياء الخاصة بك
$ foo = "foo"؛
$ بار = "بار" ؛
// احصل على جميع المتغيرات المحددة في النطاق الحالي
vars = array_diff (get_defined_vars ()، $ vars) ؛
صدى صوت "
" ;" ;
print_r ($ vars) ؛
صدى صوت "
?>
قبل 15 عاما
هذه وظيفة تقوم بإنشاء تقرير تصحيح للعرض أو البريد الإلكتروني
باستخدام get_defined_vars. عظيم للحصول على لقطة مفصلة بدون
بالاعتماد على مدخلات المستخدم.
دالة createDebugReport (طريقة $ ، $ selected_vars ، $ email = "غير محدد") (
// وظيفة لإنشاء تقرير تصحيح لعرضه أو إرساله بالبريد الإلكتروني.
// الاستخدام: createDebugReport (طريقة ، get_defined_vars () ، بريد إلكتروني) ؛
// حيث تكون الطريقة هي "المتصفح" أو "البريد الإلكتروني".
// إنشاء قائمة تجاهل للمفاتيح التي تم إرجاعها بواسطة "get_defined_vars".
// على سبيل المثال ، HTTP_POST_VARS و HTTP_GET_VARS وغيرها
// زائدة (مثل _POST ، _GET)
// قم أيضًا بتضمين المتغيرات التي تريد تجاهلها لأسباب أمنية - على سبيل المثال PHPSESSID.
$ ignorelist = مجموعة ("HTTP_POST_VARS" ، "HTTP_GET_VARS" ،
"HTTP_COOKIE_VARS" ، "HTTP_SERVER_VARS" ،
"HTTP_ENV_VARS" ، "HTTP_SESSION_VARS" ،
"_ENV" ، "PHPSESSID" ، "SESS_DBUSER" ،
"SESS_DBPASS" ، "HTTP_COOKIE") ؛
الطابع الزمني $ = التاريخ ("ش / يوم / س س: ش: ث") ؛
$ message = "إنشاء تقرير التصحيح $ timestamp \ n"؛
// احصل على آخر خطأ في SQL كمقياس جيد ، حيث $ link هو معرف المورد
// من أجل mysql_connect. التعليق أو التعديل لقاعدة البيانات أو إعداد التجريد.
رابط $ عالمي؛
$ sql_error = mysql_error (رابط $) ؛
إذا ($ sql_error) (
$ message. = "\ n رسائل MyQL: \ n". mysql_error (رابط $) ؛
}
// End MySQL
// يمكن استخدام دالة تكرارية هنا. انت وجدت الفكرة ؛-)
foreach ($ selected_vars كـ $ key => $ val) (
إذا (is_array ($ val) &&! in_array ($ key، $ ignorelist) && count ($ val)> 0) (
$ message. = "\ n $ key array (key = value): \ n"؛
foreach ($ val as $ subkey => $ subval) (
إذا (! in_array ($ subkey، $ ignorelist) &&! is_array ($ subval)) (
رسالة $. = $ فرعي. "=". $ subval. "\ ن"؛
}
elseif (! in_array ($ subkey، $ ignorelist) && is_array ($ subval)) (
foreach ($ subval مثل $ subsubkey => $ subsubval) (
إذا (! in_array ($ Subsubkey، $ ignorelist)) (
رسالة $. = $ Subsubkey. "=". $ sububval. "\ ن" ;
}
}
}
}
}
آخر (! is_array ($ val) &&! in_array ($ key، $ ignorelist) && $ val) (
رسالة $. = "\ n متغير". مفتاح $. "=". $ val. "\ ن"؛
}
}
إذا (الطريقة $ == "المتصفح") (
echo nl2br ($ message) ؛
}
elseif ($ method == "email") (
إذا (البريد الإلكتروني $ == "غير محدد") (
البريد الإلكتروني $ = _SERVER $ ["SERVER_ADMIN"] ؛
}
$ mresult = mail ($ email، "تقرير تصحيح الأخطاء". $ _ENV ["HOSTNAME"]. ""، $ message)؛
إذا (mresult دولار == 1) (
صدى صوت "تم إرسال تقرير التصحيح بنجاح. \ N";
}
آخر (
صدى صوت "فشل في إرسال تقرير التصحيح. \ N";
}
}
}
?>
قبل 17 عاما
إجراء بسيط لتحويل كائن get_defined_vars إلى XML.
دالة obj2xml ($ v ، مسافة بادئة $ = "") (
while (list ($ key، $ val) = each ($ v)) (
إذا ($ key == "__attr") تابع ؛
// تحقق من __attr
إذا (is_object ($ val -> __attr)) (
بينما (قائمة ($ key2، $ val2) = كل ($ val -> __attr)) (
$ attr. = "$ key2 = \" $ val2 \ ""؛
}
}
else $ attr = ""؛
إذا (is_array ($ val) || is_object ($ val)) (
طباعة ("مسافة بادئة $<
$key$attr
>\ ن ")؛
obj2xml ($ val، $ indent. "")؛
طباعة ("مسافة بادئة $
$key
>\ ن ")؛
}
آخر طباعة ("مسافة بادئة $<
$key$attr
>$ val
$key
>\ ن ")؛
}
}
// مثال الكائن
$ x -> الاسم -> الأول = "جون" ؛
$ x -> الاسم -> الأخير = "سميث" ؛
$ x -> arr ["Fruit"] = "Bannana"؛
$ x -> arr ["Veg"] = "جزر" ؛
$ y -> العميل = $ x ؛
$ y -> العميل -> __attr -> id = "176C4" ؛
$ z = get_defined_vars () ،
obj2xml ($ z ["y"]) ؛
?>
سيخرج:
منذ 10 سنوات
كملاحظة ، لا يُرجع get_defined_vars () مجموعة من المراجع المتغيرة (كما كنت أتمنى). على سبيل المثال:
// تحديد متغير
$ my_var = "foo"؛
// احصل على قائمة المتغيرات المحددة
$ selected_vars = get_defined_vars () ؛
// الآن حاول تغيير القيمة من خلال المصفوفة التي تم إرجاعها
$ selected_vars ["my_var"] = "شريط" ؛
صدى $ my_var، "\ n"؛
?>
سينتج "foo" (القيمة الأصلية). من الجيد أن يكون لدى get_defined_vars () حجة اختيارية لجعلها مراجع ، لكنني أتخيل أنها طلب متخصص إلى حد ما. يمكنك القيام بذلك بنفسك (بشكل أقل ملاءمة) بشيء مثل:
$ selected_vars = صفيف () ؛
var_names $ = array_keys (get_defined_vars ()) ؛
foreach (var_names $ as $ var_name)
{
$ selected_vars [$ var_name] = & $ $ var_name؛
}
?>
منذ سنة 1
لقد نشرت هنا من قبل عن "هذا" في get_defined_vars.
اتضح أنها ليست موجودة دائمًا ولكن في بعض الحالات ستظهر لسبب غير مفهوم.
php -r "
اختبار فئة (
الوظيفة العامة a () (var_dump (array_keys (get_defined_vars ())) ؛ $ a = 123 ؛)
الوظيفة العامة ب () (var_dump (array_keys (get_defined_vars ())) ؛ هذا $ ؛)
}
$ t = اختبار جديد () ؛
$ t-> a ()؛
$ t-> b ()؛
"
مجموعة مصفوفة ()
مجموعة ("هذا")
هذا لا يحدث في PHP 7.2 ولكنه سيحدث في PHP 5.6.
منذ سنة 1
تشير بعض التعليقات هنا إلى أن هذه الوظيفة لن ترجع مراجع. ومع ذلك فإنه يعيد الأسماء والأسماء "مراجع".
لا أوصي بالاقتراحات هنا لتحويله إلى مراجع.
الوظيفة العامة x ($ a، $ b، $ c) (
foreach (array_keys (get_defined_vars ()) كمفتاح $)
إذا ($ key! == "this")
$ this-> y ($ ($ key)) ؛
}
الوظيفة العامة y (& $ input) (
$ input ++ ؛
}
بدلاً من $ () ، يمكنك أيضًا استخدام $$.
لقد قمت ببعض الأشياء المضحكة في وقتي لإنشاء رمز عام للغاية ولكن "لم أضطر أبدًا إلى فعل أي شيء مثل المذكور أعلاه. قد لا ينجح الأمر (ولكن ينبغي لأنه لا يختلف عن $ a [$ key]).
يمكنك أيضًا عمل $$ key ++ لكنني "لم أر أبدًا رمزًا مثل ذلك الذي لم يكن سيئًا بشكل مروع (باستخدام ديناميكي حيث لا يكون الديناميكي مفيدًا).
إذا كنت تفعل شيئًا كهذا ، فامنحه مزيدًا من التدقيق.
تحتوي متغيرات البيئة (البيئة) في Windows على معلومات متنوعة حول إعدادات النظام وبيئة المستخدم. يميز بين متغيرات بيئة المستخدم والنظام والعملية.
أسهل طريقة لعرض محتويات متغيرات البيئة على Windows هي فتح خصائص النظام ( sysdm.cpl) -> خيارات متقدمة -> متغيرات البيئة.كما ترى ، يوجد في القسم المفتوح قسمان: الجزء العلوي يحتوي على متغيرات بيئة المستخدم ، بينما يحتوي الجزء السفلي على متغيرات النظام.
بالإضافة إلى ذلك ، يتم تخزين متغيرات البيئة في سجل النظام. يتم تخزين المتغيرات المخصصة في قسم. جهازي - في HKLM \ SYSTEM \ CurrentControlSet \ التحكم \ إدارة الجلسة \ البيئة.
يمكنك عرض قيم جميع متغيرات البيئة في سطر أوامر Windows. الأمر بسيط:
سيسرد الأمر متغيرات البيئة وقيمها.
في PowerShell ، يمكنك استخدام الأمر لعرض جميع متغيرات البيئة:
إذا كنت تريد طباعة قيمة متغير واحد فقط ، فأنت بحاجة إلى استخدام أمر echo ، ويجب وضع اسم المتغير ضمن علامات النسبة المئوية. على سبيل المثال،
صدى٪ جذر النظام٪
تعيين> c: \ tmp \ env_var.txt
يمكن الحصول على متغيرات البيئة الخاصة بالعملية باستخدام ملف أدوات مستكشف العمليات(من Sysinternals). يكفي فتح خصائص العملية والانتقال إلى علامة التبويب بيئة.
يستكشف هذا الدرس نطاق متغيرات PHP. يشرح الفرق بين النطاقات المحلية والعالمية ، ويوضح كيفية الوصول إلى المتغيرات العالمية داخل دالة ، وكيفية العمل مع superglobals ، وكيفية إنشاء متغيرات ثابتة.
عندما تبدأ في تعلم PHP وتبدأ في العمل مع الوظائف والكائنات ، يكون نطاق المتغيرات محيرًا بعض الشيء. لحسن الحظ ، من السهل جدًا فهم قواعد PHP في هذا الصدد (مقارنة بلغات البرمجة الأخرى).
ما هو النطاق؟
النطاق المتغير هو السياق الذي تم من خلاله تعريف المتغير وحيث يمكن الوصول إليه. PHP لها نطاقان متغيران:
- العالمية- يمكن الوصول إلى المتغيرات في أي مكان في البرنامج النصي
- محلي- لا يمكن الوصول إلى المتغيرات إلا داخل الوظيفة التي تم تحديدها من خلالها
النطاق المتغير ، وخاصة النطاق المحلي ، يجعل إدارة التعليمات البرمجية أسهل بكثير. إذا كانت جميع المتغيرات عامة ، فيمكن تغييرها في أي مكان في البرنامج النصي. قد يؤدي هذا إلى حدوث فوضى ونصوص كبيرة الحجم ، حيث تستخدم أجزاء مختلفة من النص في كثير من الأحيان متغيرات تحمل الاسم نفسه. من خلال تحديد نطاق السياق المحلي ، فإنك تحدد حدود الشفرة التي يمكنها الوصول إلى المتغير ، مما يجعل الشفرة أكثر قوة ووحدة وأسهل في التصحيح.
يُقال أن المتغيرات التي يتم تحديدها عالميًا هي متغيرات عالمية ، والمتغيرات ذات النطاق المحلي تسمى المحلية.
فيما يلي مثال لكيفية عمل المتغيرات العالمية والمحلية.
"؛) sayHello () ؛ صدى" القيمة \ $ globalName: "$ globalName"
"؛ صدى" القيمة \ $ localName: "$ localName"
";
?>
مرحبا هاري! قيمة $ GlobalName: "Zoe" $ localName value: ""
في هذا البرنامج النصي ، أنشأنا متغيرين:
- $ globalName- هذا هو عالميعامل
- $ localName- هذا هو محليمتغير يتم إنشاؤه داخل دالة sayHello ().
بعد إنشاء المتغير والوظيفة ، يستدعي البرنامج النصي sayHello () ، والذي ينتج عنه "Hello Harry!" ... ثم يحاول البرنامج النصي تكرار قيم المتغيرين. إليك ما يحدث:
- لأن $ globalNameتم إنشاؤه خارج الوظيفة ، وهو متاح في أي مكان في البرنامج النصي ، لذلك يتم عرض "Zoya".
- $ localNameسيكون متاحًا فقط داخل وظيفة sayHello (). نظرًا لأن تعبير echo خارج الوظيفة ، لا تسمح PHP بالوصول إلى المتغير المحلي. بدلاً من ذلك ، تفترض PHP أن الكود سينشئ متغيرًا جديدًا باسم $ localName ، والذي سيتلقى قيمة افتراضية لسلسلة فارغة. هذا هو السبب في أن الاستدعاء الثاني لـ echo يطبع قيمة "" المتغير $ localName.
الوصول إلى المتغيرات العامة داخل دالة
للوصول إلى متغير عالمي خارج الوظيفةفقط اكتب اسمها. ولكن للوصول إلى المتغير العالمي داخل الوظيفة، يجب أولاً إعلان المتغير على أنه عام في الوظيفة باستخدام الكلمة الأساسية العامة:
الوظيفة myFunction () (global $ globalVariable ؛ // الوصول إلى المتغير العام $ globalVariable)
إذا لم تفعل ذلك ، فستفترض PHP أنك تنشئ أو تستخدم متغيرًا محليًا.
فيما يلي مثال على نص برمجي يستخدم متغيرًا شاملاً داخل دالة:
"؛ global $ globalName؛ echo" مرحبًا $ globalName!
"؛) sayHello () ؛؟>
عند التنفيذ ، سينتج النص:
مرحبا هاري! مرحبا زويا!
تستخدم الدالة sayHello () الكلمة الأساسية العامة للإعلان عن المتغير globalName $ على أنه متغير عام. ثم تستطيع الوصول إلى المتغير وعرض قيمته ("Zoya").
ما هي superglobals؟
تحتوي PHP على مجموعة خاصة من المصفوفات العامة المحددة مسبقًا والتي تحتوي على معلومات متنوعة. تسمى هذه المصفوفات superglobals ،نظرًا لأنه يمكن الوصول إليها من أي مكان في البرنامج النصي ، بما في ذلك مساحة الوظيفة الداخلية ، ولا تحتاج إلى تعريف باستخدام الكلمة الأساسية العالمية.
فيما يلي قائمة بالكرة العملاقة المتوفرة في PHP 5.3:
- $ GLOBALS - قائمة بجميع المتغيرات العالمية في البرنامج النصي (باستثناء superglobals)
- $ _GET - يحتوي على قائمة بجميع حقول النموذج التي يرسلها المتصفح باستخدام طلب GET
- $ _POST - يحتوي على قائمة بجميع حقول النماذج التي يرسلها المتصفح باستخدام طلب POST
- $ _COOKIE - يحتوي على قائمة بجميع ملفات تعريف الارتباط التي يرسلها المتصفح
- $ _REQUEST - يحتوي على جميع مجموعات المفاتيح / القيم المضمنة في مصفوفات $ _GET و $ _POST و $ _COOKIE
- $ _FILES - يحتوي على قائمة بجميع الملفات التي تم تحميلها بواسطة المتصفح
- $ _SESSION - يسمح لك بتخزين واستخدام متغيرات الجلسة للمتصفح الحالي
- $ _SERVER - يحتوي على معلومات حول الخادم ، مثل اسم ملف البرنامج النصي الذي يتم تنفيذه وعنوان IP الخاص بالمستعرض.
- $ _ENV - يحتوي على قائمة بمتغيرات البيئة التي تم تمريرها إلى PHP ، على سبيل المثال متغيرات CGI.
إذا قمت بتشغيل البرنامج النصي أعلاه باستخدام سلسلة عنوان URL http://www.example.com/script.php؟yourName=Fred ، فسيتم إخراج:
مرحبًا فريد!
تحذير!في البرنامج النصي الحقيقي ، يجب ألا تستخدم نقل البيانات هذا أبدًا بسبب ضعف الأمان. يجب عليك دائمًا التحقق من بياناتك أو تصفيتها.
يعد $ GLOBALS superglobal مناسبًا جدًا للاستخدام لأنه يسمح لك بتنظيم الوصول إلى المتغيرات العالمية في وظيفة دون الحاجة إلى استخدام الكلمة الأساسية العالمية. على سبيل المثال:
"؛) sayHello () ؛ // طباعة" Hello، Zoe! "؟>
المتغيرات الثابتة: توجد في مكان قريب
عندما تقوم بإنشاء متغير محلي داخل دالة ، فإنه يوجد فقط أثناء تشغيل الوظيفة. عندما تنتهي الوظيفة ، يختفي المتغير المحلي. عندما يتم استدعاء الوظيفة مرة أخرى ، يتم إنشاء متغير محلي جديد.
هذا يعمل بشكل رائع في معظم الحالات. بهذه الطريقة تكون الوظائف قائمة بذاتها وتعمل دائمًا بنفس الطريقة في كل مرة يتم استدعاؤها.
ومع ذلك ، هناك حالات يكون من المناسب فيها إنشاء متغير محلي "يتذكر" قيمته بين استدعاءات الوظائف. يسمى هذا المتغير ثابت.
لإنشاء متغير ثابت في دالة ، يجب عليك استخدام الكلمة الأساسية الثابتة أمام اسم المتغير والتأكد من إعطائه قيمة أولية. على سبيل المثال:
الوظيفة myFunction () (static $ myVariable = 0 ؛)
دعنا نفكر في الموقف الذي يكون فيه مناسبًا لاستخدام متغير ثابت. لنفترض أنك قمت بإنشاء وظيفة ، عند استدعائها ، تنشئ عنصر واجهة مستخدم وتعرض عدد عناصر واجهة المستخدم التي تم إنشاؤها بالفعل. يمكنك محاولة كتابة رمز مثل هذا باستخدام متغير محلي:
"؛ صدى createWidget ()." لقد أنشأنا بالفعل.
"؛ صدى createWidget ()." لقد أنشأنا بالفعل.>
";
?>
ولكن نظرًا لأن المتغير $ numWidgets يتم إنشاؤه في كل مرة يتم استدعاء الوظيفة ، فسنحصل على النتيجة التالية:
نقوم بإنشاء بعض الحاجيات ... 1 لقد أنشأنا بالفعل. 1 لقد أنشأنا بالفعل. 1 لقد أنشأنا بالفعل.
ولكن باستخدام متغير ثابت ، يمكننا تخزين القيمة من استدعاء دالة إلى التالي:
"؛ صدى createWidget ()." لقد أنشأنا بالفعل.
"؛ صدى createWidget ()." لقد أنشأنا بالفعل.
"؛ صدى createWidget ()."> أنشأنا بالفعل.
";
?>
سينتج البرنامج النصي الآن الإخراج المتوقع:
نقوم بإنشاء بعض الحاجيات ... 1 لقد أنشأنا بالفعل. 2 لقد أنشأنا بالفعل. 3 لقد أنشأنا بالفعل.
على الرغم من أن المتغير الثابت يحتفظ بقيمته بين استدعاءات الوظائف ، إلا أنه صالح فقط في وقت تنفيذ البرنامج النصي. بمجرد انتهاء البرنامج النصي من تنفيذه ، يتم تدمير جميع المتغيرات الثابتة ، وكذلك المتغيرات المحلية والعالمية.
هذا كل شئ! تحقق من وثائق PHP في كثير من الأحيان.