0Pricing
PHP Academy · درس

فرز المصفوفات والبحث فيها

استخدموا sort وusort وarray_search وin_array.

فرز المصفوفات والبحث فيها درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

لماذا نُجري الفرز؟

توفر PHP مجموعة غنية من دوال فرز المصفوفات والبحث فيها. اختر الدالة المناسبة بناءً على ما إذا كنت تريد الحفاظ على المفاتيح، أو الفرز حسب القيمة أو المفتاح، أو استخدام دالة مقارنة مخصصة.

‏sort() و rsort()

تفرز sort() حسب القيمة تصاعديًا وتعيد الفهرسة، بينما تفرز rsort() تنازليًا:

<?php
$nums = [3, 1, 4, 1, 5, 9, 2, 6];
sort($nums);
print_r($nums); // [1, 1, 2, 3, 4, 5, 6, 9]

$letters = ['c', 'a', 'b'];
rsort($letters);
print_r($letters); // ['c', 'b', 'a']

‏asort() و arsort()

تفرز asort() حسب القيمة مع الحفاظ على المفاتيح، ولذلك فهي مفيدة للمصفوفات الترابطية:

<?php
$scores = ['Alice' => 85, 'Bob' => 92, 'Carol' => 78];
asort($scores);
print_r($scores);
// ['Carol'=>78, 'Alice'=>85, 'Bob'=>92]

‏ksort() و krsort()

تفرز ksort() حسب المفاتيح تصاعديًا، بينما تفرز krsort() تنازليًا:

<?php
$data = ['banana' => 2, 'apple' => 5, 'cherry' => 1];
ksort($data);
print_r($data);
// ['apple'=>5, 'banana'=>2, 'cherry'=>1]

‏usort() — دالة مقارنة مخصصة

تفرز usort() باستخدام دالة مقارنة يعرّفها المستخدم:

<?php
$people = [
    ['name' => 'Charlie', 'age' => 25],
    ['name' => 'Alice',   'age' => 30],
    ['name' => 'Bob',     'age' => 20],
];

usort($people, fn($a, $b) => $a['age'] <=> $b['age']);

foreach ($people as $p) echo $p['name'] . ' ';  // Bob Charlie Alice

‏in_array() — البحث عن قيمة

تتحقق in_array() مما إذا كانت قيمة ما موجودة في مصفوفة:

<?php
$tags = ['php', 'mysql', 'nginx'];

var_dump(in_array('php', $tags));      // true
var_dump(in_array('apache', $tags));   // false

// Third argument = strict mode (uses ===)
var_dump(in_array('1', [1, 2, 3], true));  // false (type mismatch)

‏array_search() — إرجاع المفتاح

تعيد array_search() مفتاح أول قيمة مطابقة، أو القيمة false:

<?php
$colors = ['red', 'green', 'blue'];

$key = array_search('green', $colors);
echo $key;  // 1

$notFound = array_search('purple', $colors);
var_dump($notFound);  // bool(false)

‏array_unique()

أزل القيم المكررة من مصفوفة:

<?php
$ids = [1, 2, 2, 3, 3, 3, 4];
$unique = array_unique($ids);
print_r($unique); // [1, 2, 3, 4] — keys preserved!

$reindexed = array_values($unique); // re-index to 0,1,2,3

‏array_flip()

بدّل المفاتيح والقيم في مصفوفة ترابطية:

<?php
$map = ['a' => 1, 'b' => 2, 'c' => 3];
$flipped = array_flip($map);
print_r($flipped); // [1=>'a', 2=>'b', 3=>'c']

// Useful for O(1) lookup by value
$exists = isset($flipped[2]);  // true

‏array_diff() و array_intersect()

قارن المصفوفات للعثور على الاختلافات والعناصر المشتركة:

<?php
$a = [1, 2, 3, 4, 5];
$b = [3, 4, 5, 6, 7];

$diff   = array_diff($a, $b);       // [1, 2] — in a but not b
$inter  = array_intersect($a, $b);  // [3, 4, 5] — in both

print_r($diff);
print_r($inter);

البحث الثنائي باستخدام منطق مخصص

لا تحتوي PHP على بحث ثنائي مضمن، لكن يمكنك تنفيذ بحث ثنائي أو استخدام مفاتيح مرتبة لإجراء عمليات بحث سريعة:

<?php
function binarySearch(array $arr, int $target): int {
    $lo = 0;
    $hi = count($arr) - 1;
    while ($lo <= $hi) {
        $mid = intdiv($lo + $hi, 2);
        if ($arr[$mid] === $target) return $mid;
        $arr[$mid] < $target ? $lo = $mid + 1 : $hi = $mid - 1;
    }
    return -1;
}
echo binarySearch([1,3,5,7,9], 7); // 3

تحقق سريع

ما دالة PHP التي تُرجع مفتاح قيمة مطابقة في مصفوفة؟

مراجعة: الفرز والبحث

الدوال الأساسية:

  • sort/rsort — حسب القيمة مع إعادة الفهرسة
  • asort/arsort — حسب القيمة مع الحفاظ على المفاتيح
  • ksort/krsort — حسب المفتاح
  • usort — دالة مقارنة مخصصة
  • in_array — التحقق من وجود قيمة
  • array_search — البحث عن مفتاح انطلاقًا من قيمة
  • array_unique/array_flip/array_diff/array_intersect

الأسئلة الشائعة

هل درس «فرز المصفوفات والبحث فيها» مجاني؟

نعم — نص درس «فرز المصفوفات والبحث فيها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «فرز المصفوفات والبحث فيها»؟

استخدموا sort وusort وarray_search وin_array. تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «فرز المصفوفات والبحث فيها»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المصفوفات المفهرسة والارتباطية
  2. المصفوفات متعددة الأبعاد
  3. فرز المصفوفات والبحث فيها
  4. دوال تحويل المصفوفات
← العودة إلى PHP Academy