[سجن البرمجة] أنواع المتغيرات والتعامل معها
مدرج تحت قسم: دروس
سلام الله عليك يا سجين البرمجة الكريم، انت تعبت من السهر على البرمجة وتعريف المتغيرات وبما أنك دخلت سجن البرمجة، إذا أنت خبير في تعريف المتغيرات و التعامل معها. ولكن هل خطر ببالك ما هي أنواع المتغيرات و كيفية التعامل معها؟ هل خطر ببالك كيف يمكن لأي واحد من الخارج اختراق متغيراتك أو التعامل معها بطريقة خاطئة؟ هل خطر ببالك أن لكل نوع من المتغيرات عالم خاص به و دوال خاصة به؟
هل و هل وهل .. ! أسئلة كثيرة يجب طرحها على كثير من مبرمجينا العرب يجيبك بنعم، أعرف! دون فقه لما يقوله.
عذراً ربما تعتبرني يا سجيننا الكريم بالغت، ولكن هذا هو واقع الحال. أنا مثلاً بقيت فترة كبيرة أبرمج PHP دون فقه لكثير من أشياء كنت اعتبر نفسي خبيراً بها، وعندما واجهتني مشاكل بها أوقفت العمل على كل البرنامج. لذلك أقسمت على قتل هذا السقم في أدائي بالتعلم من المواقع الأجنبية.
إذ أن المواقع العربية لا تفيدنا بشكل كبير!
لذلك فلنحاول يا سجناء البرمجة الكرام أجمعكم بأن نحاول شرح الأشياء التي نعتبرها صغيرة لكنها كبيرة و قد خصصت PHP لها دوال لأهميتها إذ أن كثير من الأحيان يتم الإلتفاف حولها من قبل خبراء البرمجة و يكشفون ضعف المبرمج من خلال هذه الدوال، فكلنا نتعلم الصعب قبل أن نتعلم الأساسيات السهلة ليس في البرمجة فقط بل بجميع دروب حياتنا.
أنواع المتغيرات
1- Integers الأعداد الصحيحة
$val = 22;
ويتم تعريف المتغير كعدد صحيح كما في المثال السابق دون علامة تنصيص.
الدوال التي تتعامل معها:
أهم دالة intval
Intval($val);
تقوم هذه الدالة بجعل المتغير عدد صحيح. مثال :
echo intval(42); // 42
echo intval(4.2); // 4
echo intval('42'); // 42
echo intval('+42'); // 42
echo intval('-42'); // -42
echo intval(042); // 34
echo intval('042'); // 42
echo intval(1e10); // 1410065408
echo intval('1e10'); // 1
echo intval(0x1A); // 26
echo intval(42000000); // 42000000
echo intval(420000000000000000000); // 0
echo intval('420000000000000000000'); // 2147483647
echo intval(42, 8); // 42
echo intval('42', 8); // 34
وهذه الدالة مهمة جداً للمبرمجين خصوصاً في حالة الأمن، وهذا ليس موضوعنا.
2- Floating point numbers الأعداد العشرية
$val = 2.2;
وهي ايضا بدون علامات تنصيص
الدوال :
أهم دالة floatval
هذه الدالة تقوم بإستخراج الأرقام العشرية من بين النصوص.
$var = '122.34343The'; $float_value_of_var = floatval($var); echo $float_value_of_var; // 122.34343
3- String النصوص
$val = "This is astring num 555";
وهي للنصوص وكما ترى يجب تعريفها وحولها عمليات تنصيص.
4- Boolean
المثال يوضح كل شيء
$val = true; $val = false;
في الأولى المتغير موجود وفي الثانية المتغير غير موجود.
5- Array المصفوفة
وهنالك النوع المشهور بالـ Array أو المصفوفة، وهذه المصفوفة تقوم بإدخال أكثر من قيمة للمتغير الواحد كالتالي:
$arr = array(5,"the","num 500");
كما ترى أنواع المتغيرات عشوائية. الآن كيف يمكنك استعراض الرقم 5 فقط ؟
Echo $arr[0];
كما ترى عزيزي المسجون هنا نستعرض أول قيمة من قيم المصفوفة.
Echo $arr[1];
كما ترى يا مسجون البرمجة الكريم أن مفتاح المصفوفة هنا 1 و صفر و 2 و … الخ، والمفتاح هو الطريق كي تعرض متغير، إذاً تسأل نفسك أنا مقيّد بهذا المفتاح في كل مصفوفاتي؟
كلا يمكنك أن تغير المفتاح كما تشاء عن طريق تعريف المصفوفة كالتالي:
$a = array ('a' =>; 'apple', 'b' =>; 'banana');
إذاً قمنا بتعريف المفتاح عن طريق وضعه داخل قوسين ” و نضع بعده >;=
كما ترى المفتاح الأول a و الثاني b. واذا أردنا استعراض كلمة apple نكتب التالي:
Echo $a['b'];
والمصفوفات يمكن أن تستخدم بطريقة شجرية أو بمعنى أسهل يمكن وضع مصفوفة داخل مصفوفة، ولكن هذا ليس موضوعنا حتى لا تتقاطع الخطوط و ترجع للزنزانة وأنت محتار.
دوال المصفوفات كثير وسنستعرض في بعضاً منها.
Print_r
وهذه الدالة تقوم بعرض كافة قيم المصفوفة و أرقامه.
<br />
$a = array ('a' =>; 'apple', 'b' =>; 'banana');
print_r ($a);
الناتج
Array ( [a] =>; apple [b] =>; banana )
إذا هذه الدالة عرضت لي المصفوفة بمفاتيحها بقيمها.
Is_array
وهذه الدالة تستفسر عمّا إذا كان المتغير مصفوفة، أم string، أو أي نوع آخر؟ مثلاً:
$yes = array('this', 'is', 'an array');
$no = 'this is a string';
if(is_array($yes)) { echo 'Array'; }
Else { echo 'not an Array'; }
echo if(is_array($no)) { echo 'Array'; }
Else { echo 'not an Array'; };
in_array
هذه الدالة تستفسر عمّا إذا كان المتغير الممرر لها في داخل المصفوفة المطلوبة أم لا؟ مثال:
$yes = array('this', 'is', 'an array');
If (in_array('this',$yes))
{
Echo "Great your val is in our array";
}
Else
{
echo "Go Out :D";
}
كما ترى يا مسجوني المصفوفات ليست صعبة جداً لكنها عالم كامل لذا أنصحك بمحاولة التعمق فيها لأهميتها في php، وأنا بإذن الله كلما توفر الوقت سأتكلم عن المصفوفات.
6- دوال المتغيرات العامة
Gettype
هذه الدالة كي تستخرج نوع المتغير إن كان srting أو اخوته.
$val = 2; $val_type = $gettype($val); echo $val_type; // integer
Settype
هذه الدالة لتغيير نوع المتغير من نوع لآخر.
$foo = "5bar"; // string $bar = true; // boolean settype($foo, "integer"); // $foo is now 5 (integer) settype($bar, "string"); // $bar is now "1" (string)
Empty
يستفسر عمّا إذا المتغير فارغ أو لبس له قيمة.
If (empty($val)) { echo "No val"; }
ويمكن الاستغناء عنها كالتالي.
If (!$val) { echo "No val"; }
Isset
عكس الدالة السابقة، وهي تستفسر إن كان المتغير له قيمة أو لا؟
If (isset($val)) { echo "the val is set and it's value=$val"; }
ويمكن الاستغناء عنها كالتالي.
If ($val) { echo "the val is set and it's value=$val"; }
Unset
للاستغناء عن المتغير و تفريغ قيمته.
$val = "Hi"; echo $val; // hi unset($val); Echo $val; // no thing will appear
ويمكن استخدامها لتدمير قصدي الاستغناء عن أكثر من متغير هكذا:
unset($foo1, $foo2, $foo3);
get_defined_vars
دالة غريبة عجيبة. تأتي بجميع المتغيرات المعرفة لديك في مصفوفة واحدة.
$val = "d"; $val_arr = get_defined_vars(); Echo $val_arr['val']; // d
انت تقوم بتعريف متغير بهذه الدالة فتعيد لك الدوال بأسمائها في مصفوفة واحدة. مثال آخر:
$val_arry = (1,2,3,3); $arr = get_defined_vars(); Print_r($arr['val_arry']);


مشكوور عزيزي Dr.Nabhan على هذا الشرح الرائع :)
ِشكرا على الموضوع جزاك الله خير .
اذا تسمح لي اضيف دالة يمكن تكون مفيدة للمطورين
Array
دمج مصفوفتين او اكثر في مصفوفة واحدة
array_merge يمكنك دمج مصفوفتين او اكثر في مصفوفة واحدة كبيرة باستخدام الدالة
مثال
< ?php
$arr1 = array('abc',1,'UAE');
$arr2 = array('xyz',2,'RASHID');
$arr3 = array_merge($arr1,$arr2);
echo $arr3[0]; // abc
echo $arr3[5]; // RASHID
?>
عزيزي بوعوف شكرا لمرورك
عزيزي الكريم محمد شكراً لهذا التعقيب الرائع
وكما تعلم المصفوفات عبارة عن عالم لوحدها
ودوالها كثيرة
وبصراحة الدالة التي طرحتها حضرتك أول مرة اشوفها وأفدتني بها
و بإذن الله كلما توفر الوقت والمزاج سأكتب عن المصفوفات
الى اللقاء
وفقك الله