فرز مصفوفات PHP هو في الواقع فرز لمصفوفات PHP. في هذه المقالة، يتم فرز مجموعة النتائج من استعلام قاعدة البيانات. في بعض الأحيان، لا يمكن استخدام نتائج استعلام قاعدة البيانات بشكل مباشر، مثل النتائج التي تم الحصول عليها باستخدام عبارة in في الخلية، لذلك يجب فرز النتائج بطريقة ما. في هذا الوقت، تحتاج إلى فرز مجموعة PHP. لفرز نتائج قاعدة البيانات، راجع المثال التالي:
في هذا المثال، تمثل كل خلية في مصفوفة البيانات صفًا في جدول. هذه طريقة نموذجية لقواعد البيانات لتخزين بيانات المصفوفة.
البيانات في المثال هي كما يلي:
المجلد |
-------+--------
67 |.2
86 |.1
85 |.6
98 |.2
86 |.6
67 |.7
يتم تخزين جميع البيانات في مصفوفة تسمى البيانات. عادة ما تكون هذه هي النتيجة التي يتم الحصول عليها من قاعدة البيانات من خلال حلقة، مثل mysql_fetch_assoc() (في الواقع، يمكنك التفكير في هذه الوظيفة على أنها نفس وظيفة mysql_fetch_assoc(). للحصول على اختلافات محددة، يمكنك قراءة الفرق في المفاتيح في دليل PHP).
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
في هذا المثال، سيتم فرز المجلد بترتيب تنازلي وسيتم فرز الإصدار بترتيب تصاعدي.
الآن لديك مصفوفة تحتوي على صفوف، لكن array_multisort() تتطلب مصفوفة تحتوي على أعمدة، لذا استخدم الكود التالي للحصول على الأعمدة ثم قم بفرزها.
// احصل على قائمة الأعمدة
foreach ($ البيانات كمفتاح $ => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// رتب البيانات ترتيبًا تنازليًا حسب الحجم وترتيبًا تصاعديًا حسب الإصدار
// استخدم بيانات $ كمعلمة أخيرة، وقم بالفرز حسب المفتاح المشترك
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
تم الآن فرز مجموعة البيانات، وكانت النتيجة كما يلي:
المجلد |
-------+--------
98 |.2
86 |.1
86 |.6
85 |.6
67 |.2
67 |.7
في الواقع، هناك العديد من الطرق التي يمكن استخدامها عند الفرز، مثل arsort() وasort() وksort() وkrsort() وnatsort() وnatcasesort() وrsort الذي يأتي مع مصفوفة PHP. () وusort () وray_multisort () وuksort ().