Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में Multidimensional Array को Multiple Keys द्वारा Sort करना


array_multisort() फंक्शन PHP में multidimensional arrays को multiple criteria द्वारा sort करने का सबसे शक्तिशाली तरीका है।

मूल उदाहरण

$events = [
    ['ID' => 1, 'title' => 'Event A', 'event_type' => 'conference', 'date' => '2024-03-15'],
    ['ID' => 2, 'title' => 'Event B', 'event_type' => 'workshop',   'date' => '2024-02-20'],
    ['ID' => 3, 'title' => 'Event C', 'event_type' => 'conference', 'date' => '2024-01-10'],
    ['ID' => 4, 'title' => 'Event D', 'event_type' => 'workshop',   'date' => '2024-04-05'],
];

// Sort columns तैयार करें
$sortByType = array_column($events, 'event_type');
$sortByDate = array_column($events, 'date');
$sortByTitle = array_column($events, 'title');

// Primary: event_type ASC, Secondary: date DESC, Tertiary: title ASC
array_multisort(
    $sortByType, SORT_ASC, SORT_STRING,
    $sortByDate, SORT_DESC, SORT_STRING,
    $sortByTitle, SORT_ASC, SORT_STRING,
    $events
);

print_r($events);

PHP 5.5+ शॉर्ट सिंटैक्स (array_column)

array_multisort(
    array_column($events, 'event_type'), SORT_ASC,
    array_column($events, 'date'),       SORT_DESC,
    array_column($events, 'title'),      SORT_ASC,
    $events
);

पुन: उपयोग योग्य फंक्शन

function sortMultiArray(array &$array, array $criteria): void {
    $sortArrays = [];
    
    foreach ($criteria as $key => $order) {
        $sortArrays[] = array_column($array, $key);
        $sortArrays[] = $order['direction'] ?? SORT_ASC;
        $sortArrays[] = $order['type'] ?? SORT_REGULAR;
    }
    
    $sortArrays[] = &$array; // Reference to original array
    array_multisort(...$sortArrays);
}

// उपयोग
$criteria = [
    'event_type' => ['direction' => SORT_ASC, 'type' => SORT_STRING],
    'date'       => ['direction' => SORT_DESC, 'type' => SORT_STRING],
    'title'      => ['direction' => SORT_ASC, 'type' => SORT_STRING],
];

sortMultiArray($events, $criteria);

Sort Flags समझाया गया

Flagविवरण
SORT_ASCआरोही क्रम (डिफ़ॉल्ट)
SORT_DESCअवरोही क्रम
SORT_REGULARसामान्य तुलना (डिफ़ॉल्ट)
SORT_NUMERICसंख्यात्मक तुलना
SORT_STRINGस्ट्रिंग तुलना
SORT_LOCALE_STRINGलोकेल-अवेयर स्ट्रिंग तुलना
SORT_NATURALप्राकृतिक क्रम (PHP 5.4+)
SORT_FLAG_CASEकेस-इनसेंसिटिव (SORT_STRING के साथ)

उन्नत: Custom Comparison (PHP 7+)

usort($events, function($a, $b) {
    // Primary: event_type
    $cmp = strcmp($a['event_type'], $b['event_type']);
    if ($cmp !== 0) return $cmp;
    
    // Secondary: date (newest first)
    $cmp = strcmp($b['date'], $a['date']);
    if ($cmp !== 0) return $cmp;
    
    // Tertiary: title
    return strcmp($a['title'], $b['title']);
});

आउटपुट उदाहरण

Array
(
    [0] => Array ( [ID] => 3 [title] => Event C [event_type] => conference [date] => 2024-01-10 )
    [1] => Array ( [ID] => 1 [title] => Event A [event_type] => conference [date] => 2024-03-15 )
    [2] => Array ( [ID] => 2 [title] => Event B [event_type] => workshop [date] => 2024-02-20 )
    [3] => Array ( [ID] => 4 [title] => Event D [event_type] => workshop [date] => 2024-04-05 )
)
  1. - PHP में max() फंक्शन

    विवरण max() फंक्शन ऐरे का अधिकतम मान लौटाता है। सिंटैक्स max(arr_values); or max(val1, val2, ...); पैरामीटर्स arr_values − मानों वाला ऐरे। val1, val2 − तुलना करने के लिए मान। रिटर्न वैल्यू max() फंक्शन ऐरे का अधिकतम मान लौटाता है। उदाहरण <?php echo(max(70, 89, 12, 34, 23, 66, 34)); ?> आ

  1. - PHP में sort() फंक्शन

    PHP में sort() फंक्शन सरणी को आरोही क्रम में क्रमबद्ध करता है। सिंटैक्स sort(arr, flag) पैरामीटर्स arr - क्रमबद्ध की जाने वाली सरणी। flag - 0 = SORT_REGULAR - डिफ़ॉल्ट। आइटम्स की सामान्य तुलना करें। प्रकार न बदलें। 1 = SORT_NUMERIC - आइटम्स की संख्यात्मक तुलना करें। 2 = SORT_STRING - आइटम्स की स

  1. - PHP में array() फ़ंक्शन / सरणी निर्माण

    PHP में array() भाषा निर्माण (language construct) है जो सरणी बनाता है। PHP 5.4+ में छोटा सिंटैक्स [] भी उपलब्ध है। PHP में तीन प्रकार की सरणियाँ होती हैं। सरणी के प्रकार (Array Types) प्रकारविवरणउदाहरण सूचकांकित (Indexed)संख्यात्मक कुंजियाँ (0, 1, 2...)[10, 20, 30] सहयोगी (Associative)नामित कुंजि