Nov 242010
 

الشكل المعتاد للمتغيرات:

<?PHP
 
$var1 = 'Hello,';
$var2 = '<br /?>';
echo $var1.$var2;
/*
سيعرض المتغير الأول والمتغير الثاني معًا، لاحظ أني قمت بتخزين وسم إنزال سطر جديد في المتغير الثاني 
بالتالي المتغير الأول سيقوم بعرض الكلمة المخزنه به، والمتغير الثالي سيقوم مباشرة بالنزول لسطر جديد
*/
 
$n1 = 5;
$n2 = 3;
 
echo $n1+n2; ## ناتج جمع المتغير الأول مع المتغير الثاني
echo "<br />"; سطر جديد
echo $n1*n2; ## ناتج ضرب المتغير الأول في المتغير الثاني
echo "<br />"; سطر جديد
 
?>

لننتقل الآن لطريقة كتابة المصفوفات في PHP وطريقة إستدعاءها.

مثال (1):

$email = array('test1@hct.me',
               'test2@hct.me',
               'test3@hct.me',
               'test4@hct.me');

مثال (2):

$email = array();
$email[] = 'test1@hct.me';
$email[] = 'test2@hct.me';
$email[] = 'test3@hct.me';
$email[] = 'test4@hct.me';

المثال (1) = المثال (2)
في المثالين أعلاه، لجلب متغير معين سنضطر لاستخدام فهرس (index)، الفهرس عبارة عن رقم يبدأ من الصفر وينهي بعدد الصفوف في المصفوفة – 1
على سبيل المثال، نريد عرض البريد الالكتروني “test3@hct.me” من أحد المصفوفات السابقات، طريقة العرض الصحيحة حسب الفهرسة أعلاه:

echo $email[2];

لعرض كافة المدخلات في أيًا من المصفوفات أعلاه:

<?php
foreach($email as $e)
{
 echo $e."<br />\n";
}
?>

لنتعمق أكثر في المصفوفات، مثال (3):

$email = array('Abdulaziz' => 'sp@hct.me',
               'Test2' => 'test2@hct.me',
               'Test3' => 'test3@hct.me',
               'Test4' => 'test4@hct.me');

مثال (4):

$email = array();
$email['Abdulaziz'] = 'sp@hct.me';
$email['Test2'] = 'test2@hct.me';
$email['Test3'] = 'test3@hct.me';
$email['Test4'] = 'test4@hct.me';

أيضًا المثال (3) = المثال (4)
ربما تعدد طرق الكتابة سيكون مفيدًا لك كمبرمج اكثر 🙂

لعرض محتوى مدخل وحيد من أي مصفوفة من المثال (3) أو المثال (4) يمكنك استخدام الطريقة الآتية لعرض “sp@hct.me” على سبيل المثال:

echo $email['Abdulaziz'];

لعرض كافة المدخلات من المصفوفة في المثال (3) أو المصفوفة في المثال (4):

<?php
foreach($email as $name => $e)
{
 echo $name.'<b>=></b>'.$e."<br />\n";
}
?>

مرة أخرى لنتعمق اكثر، مثال (5):

$setting = array(
                 'database' => array('host'   => 'localhost',
                                     'user'   => 'root',
                                     'pass'   => '',
                                     'dbnm'   => 'testdb',
                                     'prefix' => 'hct_'),
                 'site'     => array ('url'   => 'http://www.hct.me',
                                      'title' => 'HCT Community Forum'),
                 'upload'   => array ('types' => array('.jpg','.gif'),
                                      'msize' => '2048')
                 );

نلاحظ أنه تم إدخال مصفوفة فرعية ثم في المصفوفة الرئيسية

مثال (6):

$setting = array();
$setting['database'] = array();
$setting['database']['host'] = 'loacalhost'; 
$setting['database']['user'] = 'root';
$setting['database']['pass'] = '';
$setting['database']['dbnm'] = 'testdb';  
$setting['database']['prefix'] = 'hct_';     
$setting['site'] = array();     
$setting['site']['url'] = 'http://www.hct.me';    
$setting['site']['title'] = 'HCT Community Forum';  
$setting['upload'] = array();
$setting['upload']['types'] = array('.jpg','.gif'); 
$setting['upload']['msize'] = '2048';

في المثالين 5 و 6 لعرض اسم قاعدة البيانات نكتب الآتي:

echo $setting['database']['dbnm'];

لعرض كافة المدخلات في المثال (5) أو المثال (6):

<?php
foreach($setting as $type => $value)
{
 echo "<b>".$type.":</b><br />\n";
 foreach($value as $type2 => $value2)
  echo "\t".$type2.'<b>=></b>'.$value2."<br />\n";
}
?>
<?php
foreach($setting as $type => $value)
{
 echo "<b>".$type.":</b>
\n"; foreach($value as $type2 => $value2) echo "\t".$type2.'<b>=></b>'.$value2."<br />\n"; } ?>

الآن سأقوم بشرح المغزى من الدرس أعلاه :)، كمثال عند استخدامك لدالة معينة من صنعك، عليك بتعريف المتغيرات أما في الدالة نفسها بوضعها كمتغيرات تكتب عند استخدام الدالة كل مرة، مثال:

db_connect($host,$user,$pass,$db);

أو يمكنك تخزينها داخل الدالة على أن يتم جلبها من متغيرات خارجية، لكن لجلب متغير خارج الدالة واستخدامه داخل الدالة يجب استخدام global، مثال لدالة بسيطة (دالة بلا مغزى :D) :

$var1 = 'test'
 
function test_function()
{
 global $var1;
 return $var1;
}
 
echo test_function();

لنتفرض انك لا تود تكرار بيانات أو كتابة شفرة كبيرة للإتصال بقواعد البيانات، في ملف الإعدادات لديك الشفرة الآتية:

$database_host = 'localhost';
$database_user = 'root';
$database_pass = '';
$database_dbnm = 'testdb';
$database_prefix = 'hct_';

لعمل دالة الإتصال بشكل صحيح حسب بنية ملف الإعدادات الخاص بك:

function db_connect()
{
 global $database_host, $database_user, $database_pass, $database_dbnm;
 @mysql_pconnect($database_host,$database_user,$database_pass);
 @mysql_select_db($database_dbnm);
}

هل لاحظت اننا اضطررنا لوضع كافة المتغيرات من ملف الإعدادات مع global ؟
على افتراض أنه لديك اعددات أكثر ودالة أخرى، هل أنت مستعد لكتابة كافة المتغيرات في الدوال؟

على غرار المثال السابق، سنستبدل ملف الإعدادات للمحتوى التالي (نفس المحتوى في المثال 6):

$setting = array();
$setting['database'] = array();
$setting['database']['host'] = 'loacalhost'; 
$setting['database']['user'] = 'root';
$setting['database']['pass'] = '';
$setting['database']['dbnm'] = 'testdb';  
$setting['database']['prefix'] = 'hct_';     
$setting['site'] = array();     
$setting['site']['url'] = 'http://www.hct.me';    
$setting['site']['title'] = 'HCT Community Forum';  
$setting['upload'] = array();
$setting['upload']['types'] = array('.jpg','.gif'); 
$setting['upload']['msize'] = '2048';

الدالة ببساطة ستكون كالتالي:

function db_connect()
{
 global $setting;
 @mysql_pconnect($setting['database']['host'],$setting['database']['user'],$setting['database']['pass']);
 @mysql_select_db($setting['database']['dbnm']);
}

باختصار لم نضطر لكتابة كافة المتغيرات، اختصرنا الطريق بكتابة اسم المصفوفة الرئيسية..