

نبدأ مع كيفية تفكيك المصفوفات
شرحنا سابقا كيفية بناء المصفوفات و اليوم نلقى نظرة على تفكيك المصفوفة من عناصرها وهنا سوف نقسمها إلى قسمين أو نوعين لآداء تلك المهمة :
أولا : بواسطة الكلمة المحجوزة للبرنامج والتى تعبر عن وظيفة و إسم هذة الكلمة فى اللوا هى unpack
وباللغة العربية تنطق أن باك
 مثال  للتوضيح لدينا مصفوفة مكونة من 4  عناصر مثل المصفوفة التالية :
  مثال  للتوضيح لدينا مصفوفة مكونة من 4  عناصر مثل المصفوفة التالية :كود PHP:
	
	
{"abood", "Haitham", "aziz", "khaled"} 
نريد تفكيك هذة المصفوفة السابقة من عناصرها وذلك بغرض عرض العناصر كل على حدى فيكون كالآتى :
كود PHP:
	
	
unpack  ({"abood", "Haitham", "aziz", "khaled"} ) 
هنا سوف يكون ناتج تفكيك المصفوفة كالتالى :
abood , Haitham , aziz , khaled
 مثال تطبيقى  :
   مثال تطبيقى  :كود PHP:
	
	
f = unpack ({"abood", "Haitham", "aziz", "khaled"})
Dialog.Message("Notice", f, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); 
 هنا سوف يكون ناتج التفكيك فى المتغير الإفتراضى  المسمى  بـــ   f   هو  abood  فلماذا   ؟
   هنا سوف يكون ناتج التفكيك فى المتغير الإفتراضى  المسمى  بـــ   f   هو  abood  فلماذا   ؟نعود بمثال بسيط للتوضيح إذا كان :
كود PHP:
	
	
t = 1 
 فهذا  واضح جدا أن الــ  تى = 1
  فهذا  واضح جدا أن الــ  تى = 1نعود بمثال آخر إذا كان :
كود PHP:
	
	
t = "abood", "abohmam" 
 أيضا سوف يكون  الناتج المخزن فى الــ  t  هو  abood
   أيضا سوف يكون  الناتج المخزن فى الــ  t  هو  aboodمن التوضيحات السابقة نجد أن لتساوى طرفين أحدهما يعبر عنه بالمتغير أو المتغيرات و الآخر هو القيمة أو القيم يتم وضع عدد من المتغيرات و عدد من القيم
فيكون المتغير الأول يساوى القيمة الأولى أو بمعنى المتغير الأول معبر عنة بالقيمة الأولى
ولا يخفى علينا معنى كلمة المتغير فقد وضحناها فى الشروحات السابقة
وطبعا القراءة من اليسار إلى اليمين بالنسبة للأكواد
إذن فى المثال السابق نجد أن القيمة abohmam لايوجد متغير معبر عنة
أما القيمة abood فقد كان المتغير t معبرا عنة
 إذا  كان عدد القيم أكبر من عدد المتغيرات فإن القيم يتم إهمالها لعدم وجود متغير يكون معبرا  عنها
  إذا  كان عدد القيم أكبر من عدد المتغيرات فإن القيم يتم إهمالها لعدم وجود متغير يكون معبرا  عنهانعود بمثال لآخر إذا كان :
كود PHP:
	
	
t , s = "abood" , "abohmam" 
 إذن الــــ   t   يساوى  abood
   إذن الــــ   t   يساوى  abood و إذن  الــــ  s  يساوى  abohmam
   و إذن  الــــ  s  يساوى  abohmamنعود بمثال لآخر إذا كان :
كود PHP:
	
	
 t , s , v = "abood" , "abohmam" 
 إذن الــــ   t   يساوى  abood
  إذن الــــ   t   يساوى  abood و إذن  الــــ  s  يساوى  abohmam
  و إذن  الــــ  s  يساوى  abohmam و إذن  الــــ  v  يساوى  nil
  و إذن  الــــ  v  يساوى  nil إذا  كان عدد المتغيرات أكبر من عدد القيم فإن المتغير الذى لا يوجد قيمة لة  يكون قيمتة  nil
      إذا  كان عدد المتغيرات أكبر من عدد القيم فإن المتغير الذى لا يوجد قيمة لة  يكون قيمتة  nil  عذرا  للإطالة  فقد كانت للتوضيح
   عذرا  للإطالة  فقد كانت للتوضيح  فنعود مرة أخرى إلى الكود الذى كان  :
   فنعود مرة أخرى إلى الكود الذى كان  :كود PHP:
	
	
f = unpack ({"abood", "Haitham", "aziz", "khaled"})
Dialog.Message("Notice", f, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); 
ذكرنا سابقا أن كلمة unpack هى تعليمة برمجية محجوزة و تعمل على تفكيك المصفوفات
وعلى ضوء توضيحاتنا فى الأعلى فإن نتيجة تفكيك المصفوفة السابقة يخزن فى المتغير f فقط التفكيك الأول للمصفوفة وهو القيمة abood
وذلك لأنة المتغير الأول
لذلك لتخزين القيم الباقية يجب وضع متغيرات لها أو بمعنى إضافة متغيرات مع المتغير f
إذن على سبيل المثال كان الكود التالى :
كود PHP:
	
	
f , b , d , y = unpack ({"abood", "Haitham", "aziz", "khaled"})
Dialog.Message("Notice", f, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Notice", b, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Notice", d, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Dialog.Message("Notice", y, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); 
عند عمل معاينة للكود السابق من خلال 4 رسائل توضيحية فيكون :
 f     يساوى  abood
   f     يساوى  abood b       يساوى  Haitham
   b       يساوى  Haitham d     يساوى  aziz
   d     يساوى  aziz y     يساوى  khaled
   y     يساوى  khaledوبهذا قد عرضنا نتيجة تفكيك المصفوفة السابقة بإستخدام الكلمة المحجوزة unpack

ثانيا : بواسطة الكود المخصص للتعامل مع المصفوفات والمدمج فى أكواد البرنامج ضمن مجموعة تسمى Table
 هذا الكود  هو :     Table.Concat
  هذا الكود  هو :     Table.Concatهذا الكود يعمل على إرجاع كل القيم الموجودة فى الجدول ويتم الفصل بين القيمة و الأخرى من خلال تحديد محدد أو فاصل من إختيارك
ويحتوى هذا الكود على 4 بارامترات Parameters وهم :
SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Separator وهو المحدد الذى يتم إختيارة لفصل القيم الموجودة فى الجدول
Start وهو القيمة التى يراد البدأ عندها فى الجدول بمعنى الرقم
End وهو القيمة التى يراد الإنتهاء عندها فى الجدول بمعنى الرقم فإذا كان المراد هو الإنتهاء عند آخر قيمة فى الجدول فيمكن إستخدام 1 -
أو يمكن إستخدام المتغير المحجوز و المعبر عن كل القيم المدرجة بالجدول TABLE_ALL
 إذن  عندما نأخذ مثال تطبيقى على هذا  الكود  كما يلى :
   إذن  عندما نأخذ مثال تطبيقى على هذا  الكود  كما يلى :كود PHP:
	
	
t = {"abood" , "Haitham" , "aziz" , "khaled"}
result = Table.Concat(t, ";", 1, -1);
Dialog.Message("Notice", result, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); 
كما هو موضح بالكود أعلاة فإن لدينا جدول أو مصفوفة إسمها t
وتم إستخدام Table.Concat وذلك للحصول على العناصر أو القيم المدرجة فى الجدول أو المصفوفة السابقة وتم إستخدام متغير إفتراضى إسمة result
بغرض تخزين النتيجة بة
ونجد أننا إستخدمنا الفاصلة المنقوطة وذلك بغرض الفصل بين كل عنصر فى المصفوفة أو الجدول
أيضا نجد أننا إستخدمنا رقم 1 وذلك للبدأ من العنصر أو القيمة رقم 1 فى المصفوفة أو الجدول
أيضا نجد أنا إستخدمنا رقم 1- وذلك للتعبير عن القيمة أو الإندكس المراد التوقف عندة وهو فى هذة الحالة سوف يكون آخر قيمة موجودة فى الجدول أو المصفوفة
أو كان ممكنا أن نعوض عن ذلك بالمتغير المحجوز وهو TABLE_ALL
 هنا سوف تظهر الرسالة بالعناصر كما يلى :
   هنا سوف تظهر الرسالة بالعناصر كما يلى : abood;Haitham;aziz;khaled

مجموعة أكواد التعامل مع المصفوفات أو الجداول
إستعراض لمجموعة أكواد أو وظائف التعامل مع المصفوفات أو الجداول فكلا التعبيري صحيح كما بالصورة التالية :

أولا : Table.Concat
 فى أعلى الشرح وضحنا كيفية التعامل بإستخدام الكود أو الوظيفة   Table.Concat
   فى أعلى الشرح وضحنا كيفية التعامل بإستخدام الكود أو الوظيفة   Table.Concat
ثانيا : Table.Count
تعمل هذة الوظيفة على معرفة عدد العناصر الموجودة فى الجدول
ويحتوى هذا الكود على 1 بارامترات Parameters وهو :
SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
 إذن  عندما نأخذ مثال تطبيقى على هذا  الكود  كما يلى :
   إذن  عندما نأخذ مثال تطبيقى على هذا  الكود  كما يلى :كود PHP:
	
	
t = {"abood" , "Haitham" , "aziz" , "khaled"}
result = Table.Count(t);
Dialog.Message("Notice", result, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1); 
كما هو موضح بالكود أعلاة فإن لدينا جدول أو مصفوفة إسمها t
وتم إستخدام Table.Count وذلك للحصول على عدد العناصر أو القيم المدرجة فى الجدول أو المصفوفة السابقة وتم إستخدام متغير إفتراضى إسمة result
بغرض تخزين النتيجة بة
 هنا  ستعرض  لنا الرسالة التى تظهر  عدد  عناصر  الجدول   t   والذى  سوف يكون   4
  هنا  ستعرض  لنا الرسالة التى تظهر  عدد  عناصر  الجدول   t   والذى  سوف يكون   4
ثالثا : Table.Insert
يستخدم هذا الكود أو هذة الوظيفة لإجراء تعديلات إدخال عناصر على مصفوفة أو جدول معلوم مسبقا أى بمعنى أن يكون الجدول قد أعلن عنة مسبقا فربما نكون بصدد إنشاء جدول جديد
ونريد إدخال قيم أو عناصر فية وكما ذكرنا سابقا فى الشرح السابق عن طريقة الإعلان عن جدول يكون بفتح قوسين كبيرين و عمل إسم إفتراضى متغير للتعامل معه
و كمثال مرة أخرى على ذلك سوف ننشئ أو نعلن جدول جديد فارغ من أى عناصر كالتالى :
كود PHP:
	
	
k = {} 
ففى الحالة السابقة أعلنت عن جدول فارغ إسمة k
ولإدخال عناصر بهذا الجدول يمكن بالوظيفة التى نتكلم عنها حاليا Table.Insert
الطريقة الأخرى التى تستخدم فيها هذا الكود هو عند التعامل مع جدول موجود بالفعل ومحتوى على عناصر
ويحتوى هذا الكود أو الوظيفة على 3 بارامترات Parameters وهم :
SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Position وهو المكان أو المفتاح أو رقم الإندكس أو الترتيب المراد الإدخال إلية فى المصفوفة
Value وهو العنصر أو القيمة المراد إدخالها فى الجدول
 إذن  عندما نأخذ مثال تطبيقى على إدخال عنصر أو قيمة جديدة فى جدول  كما يلى :
   إذن  عندما نأخذ مثال تطبيقى على إدخال عنصر أو قيمة جديدة فى جدول  كما يلى :كود PHP:
	
	
t = {"abood" , "Haitham" , "aziz" , "khaled"}
Table.Insert(t, 4, "أبو يوسف"); 
هنا فى الكود السابق قمنا بإدخال عنصر أو قيمة جديدة "أبو يوسف" فى الترتيب الرابع فى المصفوفة t
إذن سوف يصبح شكل المصفوفة النهائى كالتالى بعد إدخال العنصر الجديد لها :
كود PHP:
	
	
t = {"abood" , "Haitham" , "aziz" , "أبو يوسف" , "khaled"} 

رابعا : Table.Remove
يستخدم هذا الكود أو الوظيفة فى إجراء تعديلات على مصفوفة موجودة فعليا أى مصفوفة معروفة وتحتوى على عناصر هذة التعديلات هى حذف أى عنصر منها وذلك بمعلومية ترتيبة داخل هذة المصفوفة أو الجدول
ويحتوى هذا الكود أو الوظيفة على 2 بارامترات Parameters وهم :
SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Position وهو المكان أو المفتاح أو رقم الإندكس أو الترتيب المراد الإدخال إلية فى المصفوفة
 إذن  عندما نأخذ مثال تطبيقى على حذف عنصر أو قيمة من جدول  كما يلى :
   إذن  عندما نأخذ مثال تطبيقى على حذف عنصر أو قيمة من جدول  كما يلى :كود PHP:
	
	
t = {"abood" , "Haitham" , "aziz" , "أبو يوسف" , "khaled"}
s = Table.Remove(t, 1); 
 فى المثال الموضح أعلاة  قمنا بحذف  العنصر  رقم  1    كترتيب  فى المصفوفة أو الجدول    t
   فى المثال الموضح أعلاة  قمنا بحذف  العنصر  رقم  1    كترتيب  فى المصفوفة أو الجدول    tوبالتالى فقد تم حذف abood من المصفوفة t
 إذن  سوف يصبح شكل المصفوفة  النهائى كالتالى بعد حذف العنصر رقم  1  منها  :
   إذن  سوف يصبح شكل المصفوفة  النهائى كالتالى بعد حذف العنصر رقم  1  منها  :كود PHP:
	
	
t = {"Haitham" , "aziz" , "أبو يوسف" , "khaled"} 

خامسا : Table.Sort
تستخدم هذة الوظيفة بغرض ترتيب العناصر داخل المصفوفة إما ترتيبا رقميا أو أبجديا وتصاعديا أو تنازليا
ويحتوى هذا الكود أو الوظيفة على 2 بارامترات Parameters وهم :
SourceTable وهو إسم المصفوفة أو المتغير المعبر عن المصفوفة أو الجدول
Compare وهى وظيفة مقارنة بين آرجين أو بارامترين و من ثم إعادة قيمة بولينية لهذة الوظيفة فى حالة تحقق الشرط أو عدم تحقق الشرط
وهذة المقارنة تتم بواسطة أو عن طريق إستخدام علامة أكبر من أو علامة أصغر من
ومثال لهذة الوظيفة مع إمكانية تغيير علامة أكبر من إلى علامة أصغر من فى عملية المقارنة وذلك طبقا للترتيب المراد تصاعديا أو تنازليا :
كود PHP:
	
	
function sorter(v1,v2)
    if (v1 > v2)then
        return true;
    else
        return false;
    end
end 
 فى حالة إستخدام  علامة  <   سوف يكون الترتيب تنازليا
  فى حالة إستخدام  علامة  <   سوف يكون الترتيب تنازليا  فى حالة إستخدام  علامة  >   سوف يكون الترتيب تصاعديا
   فى حالة إستخدام  علامة  >   سوف يكون الترتيب تصاعديا إذن  عندما نأخذ مثال تطبيقى على ترتيب عناصر جدول  كما يلى :
    إذن  عندما نأخذ مثال تطبيقى على ترتيب عناصر جدول  كما يلى :كود PHP:
	
	
function sorter(v1,v2)
    if (v1 > v2)then
        return true;
    else
        return false;
    end
end
t = {"Abood" , "Haitham" , "Aziz" , "Khaled"}
Table.Sort(t, sorter); 
 فى هذا المثال السابق سوف يكون نتيجة الترتيب أبجديا تنازليا
   فى هذا المثال السابق سوف يكون نتيجة الترتيب أبجديا تنازليا وفى هذة الحالة أى حالة ترتيب النصوص يجب مراعاة وضع أول حرف  للنص  كابيتل  أى حرف كبير
    وفى هذة الحالة أى حالة ترتيب النصوص يجب مراعاة وضع أول حرف  للنص  كابيتل  أى حرف كبير بمعنى أنة لن يعترف فى الترتيب النصى بحروف صغيرة فى أول النص
 طبعا  وضعت مثال و توضيح فى حالة الترتيب  النصى  و أعتقد  لا يوجد صعوبات مع الترتيب  الرقمى فليس هاك داعى لوضع مثال
     طبعا  وضعت مثال و توضيح فى حالة الترتيب  النصى  و أعتقد  لا يوجد صعوبات مع الترتيب  الرقمى فليس هاك داعى لوضع مثال
 طبعا  أنا  متعمد  لعدم  ذكر  التكرار بأنواعة  لعرض  ما بداخل المصفوفة أو الجدول  فسوف يتم التعرض  للتكرار  في  دروس  لاحقة  فتابعونا
     طبعا  أنا  متعمد  لعدم  ذكر  التكرار بأنواعة  لعرض  ما بداخل المصفوفة أو الجدول  فسوف يتم التعرض  للتكرار  في  دروس  لاحقة  فتابعونا      
 أكتفى بهذا  القدر البسيط و أتمنى أن  يكون مفيـــــــــــــــد
  أكتفى بهذا  القدر البسيط و أتمنى أن  يكون مفيـــــــــــــــد  
 يمكن تحميــل الشرح من المرفقات فقد تم تحويلة إلى كتـاب بى دى إف
يمكن تحميــل الشرح من المرفقات فقد تم تحويلة إلى كتـاب بى دى إف 
  
 
		
							
						






 
							
						
تعليق