पिछले प्रस्तावित समाधान तार्किक लगता है, लेकिन यह सिर्फ काम doens't:
ksort($arrTags);
arsort($arrTags);
पूरा PHP कोड का एहसास करने के लिए कहा छँटाई, जाएगा:
$k = array_keys($arrTags);
$v = array_values($arrTags);
array_multisort($k, SORT_ASC, $v, SORT_DESC);
$arrTags = array_combine($k, $v);
कृपया ध्यान दें कि array_multisort() उपयोगकर्ता इनपुट पर संदर्भ का उपयोग करता है, तो आप दो अस्थायी variabels ($ कश्मीर और $ v) उपयोगकर्ता इनपुट के रूप में सामग्री की आपूर्ति करने का उपयोग करना होगा। इस तरह array_multisort() सामग्री को बदल सकता है। बाद में, array_combine() के माध्यम से क्रमबद्ध सरणी का पुनर्निर्माण करें।
मैं इस कार्य को पूरा करने के लिए एक पुन: प्रयोज्य समारोह का निर्माण किया है:
<?php
/**
* Sort a multi-dimensional array by key, then by value.
*
* @param array Array to be sorted
* @param int One of the available sort options: SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
* @param int One of the available sort options: SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
* @return void
* @example The following array will be reordered:
* $a = array(
* 'd' => 4,
* 'c' => 2,
* 'a' => 3,
* 'b' => 1,
* 'e' => 2,
* 'g' => 2,
* 'f' => 2,
* );
* SortArrayByKeyThanValue($a); # reorder array to: array(
* 'b' => 1,
* 'c' => 2,
* 'e' => 2,
* 'f' => 2,
* 'g' => 2,
* 'a' => 3,
* 'd' => 4,
* );
* @author Sijmen Ruwhof <sijmen(a)secundity.com>
* @copyright 2011, Secundity
*/
function SortArrayByKeyThanValue (&$pArray, $pSortMethodForKey = SORT_ASC, $pSortMethodForValue = SORT_ASC)
{
# check user input: sorting is not necessary
if (count($pArray) < 2)
return;
# define $k and $v as array_multisort() needs real variables, as user input is put by reference
$k = array_keys ($pArray);
$v = array_values($pArray);
array_multisort(
$v, $pSortMethodForValue,
$k, $pSortMethodForKey
);
$pArray = array_combine($k, $v);
}
?>
@MMior तो जटिल समाधान क्या है? –
एक अच्छा कार्यान्वयन उदाहरण के लिए @ जोन बर्नार्ड बोले देखें। –