Array Functions3

🔹 42. الفرق بين == و === في مقارنة المصفوفات
المشغلماذا يفعل؟
==يقارن المحتوى فقط بدون التحقق من الترتيب أو النوع
===يقارن المحتوى + الترتيب + النوع بدقة
✅ مثال 1 – استخدام ==:
$arr1 = [1, 2, 3];
$arr2 = [1, 2, 3];

var_dump($arr1 == $arr2); // true ✅
PHP
✅ مثال 2 – استخدام ===:
$arr1 = [1, 2, 3];
$arr2 = ["1", 2, 3];

var_dump($arr1 === $arr2); // false ❌ لأن "1" ليست نفسها 1
PHP
✅ مثال 3 – اختلاف الترتيب:
$a = [1, 2, 3];
$b = [3, 2, 1];

var_dump($a == $b);  // false ❌
var_dump($a === $b); // false ❌
PHP
✅ التوصية:
  • استخدم === في التحقق الصارم (خاصة في المقارنات الحساسة).
  • استخدم == فقط لو كنت تعرف أن الترتيب والنوع ليسا مهمين.
🔹 43. التعامل مع المصفوفات باستخدام JSON
json_encode() – لتحويل المصفوفة إلى JSON:
$user = ["name" => "Yasin", "age" => 25];
$json = json_encode($user);
echo $json; // {"name":"Yasin","age":25}
PHP
json_decode() – لتحويل JSON إلى مصفوفة:
$json = '{"name":"Yasin","age":25}';
$array = json_decode($json, true); // true: يرجع كمصفوفة
print_r($array);
PHP
✅ الفوائد:
  • يُستخدم في إرسال البيانات عبر APIs.
  • مناسب للتخزين أو القراءة من ملفات أو قواعد البيانات.
⚠️ ملاحظات:
  • يجب التأكد أن الـ JSON صالح قبل التحويل.
  • إذا لم تستخدم true في json_decode سترجع كائن (object) وليس مصفوفة.
🔹 44. الفرق بين array() و []
array():
$data = array(1, 2, 3);
PHP
[]:
$data = [1, 2, 3];
PHP
✅ الفروقات:
النوعمدعوم منالأفضلية
array()منذ PHP 3أقدم
[]PHP 5.4+أكثر استخدامًا وحداثة
✅ التوصية:
  • استخدم [] دائمًا إن كانت نسختك PHP 5.4 أو أحدث (وهي الأغلب الآن).
🔹 45. Spread Operator داخل المصفوفات (PHP 7.4+)

🔁 يُستخدم لدمج أكثر من مصفوفة بسهولة داخل مصفوفة جديدة.

✅ مثال:
$a = [1, 2, 3];
$b = [4, 5, 6];

$combined = [...$a, ...$b];
print_r($combined); // [1, 2, 3, 4, 5, 6]
PHP
✅ مع قيم إضافية:
$newArray = [...$a, 99, 100];
PHP
✅ فوائد:
  • قراءة أسهل من array_merge().
  • أكثر سرعة وأنيق بالشكل.
⚠️ محاذير:
  • لا يمكن استخدامه مع مصفوفات غير مرقمة ترتيبًا (Associative) في PHP 7.4.
  • في PHP 8+ صار يُستخدم مع المفاتيح المخصصة.
🔹 46. unpack() – لتحويل بايتات إلى مصفوفة

📦 تستخدم هذه الدالة لتحليل سلسلة ثنائية (Binary String) إلى قيم مصفوفة.

✅ مثال بسيط:
$data = "\x10\x20"; // بيانات ثنائية
$result = unpack("C*", $data); // C = unsigned char
print_r($result);

// Array ( [1] => 16 [2] => 32 )
PHP
✅ الاستخدامات:
  • يُستخدم في قراءة الملفات الثنائية (مثل الصور أو ملفات الـ ZIP).
  • مفيد في برمجة الأنظمة المنخفضة المستوى أو تحليل الـ sockets.
✅ تنسيقات أخرى في unpack():
الرمزالوصف
Cunsigned char
nunsigned short (big-endian)
Nunsigned long (big-endian)
Vunsigned long (little-endian)
⚠️ محاذير:
  • يجب أن يكون تنسيق البايتات متطابق مع ما تتوقعه.
  • غير مناسب للمبتدئين في البداية إلا عند الحاجة المتخصصة.
✅ ملخص سريع:
رقمالدالة / المفهومالغرض
42== vs ===مقارنة القيم والمصفوفات
43json_encode() / decode()تحويل بين JSON وPHP
44array() vs []طريقة كتابة المصفوفات
45... Spread Operatorدمج مصفوفات بشكل أنيق
46unpack()تحليل بيانات ثنائية