2012-08-29 14 views
13

PHP 5.4 में ऐरे केस-असंवेदनशील कुंजी प्रकार कोई अन्य खोज केस असंवेदनशील बनाने के लिए उपयोगी SORT_FLAG_CASE प्रस्तुत करता है। दुर्भाग्य से इस पीएचपी 5.3 या उससे कम में उपलब्ध नहीं है और इसलिए मैं सोच रहा था कि कैसे निम्नलिखित सरणी:PHP संस्करण 5.3 या उससे कम

array('a'=>2,'b'=>4,'A'=>1,'B'=>3); 

में क्रमबद्ध किया जा सकता है: हमेशा की तरह ksort() समारोह के रूप में

array('A'=>1,'a'=>2,'B'=>3,'b'=>4); 

के रूप में यह सॉर्ट करता:

array('A'=>1,'B'=>3,'a'=>2,'b'=>4); 
+0

मैं 'कर सकते हैं पोस्टिंग के 2 दिन बाद तक इसे स्वीकार नहीं करते हैं। – M1ke

+0

ठीक है, मैं इसके बारे में भूल गया, इसलिए कृपया एक + दिनों में याद दिलाएं;) – hakre

+0

निश्चित रूप से, कोई समस्या नहीं है। – M1ke

उत्तर

23

PHP फ़ंक्शन संदर्भ पृष्ठों में से एक पर एक टिप्पणी ने मुझे uksort() फ़ंक्शन पर इंगित किया; यह (और uasort() कुंजी के बजाय मूल्य द्वारा सॉर्ट करने के लिए फ़ंक्शन) उपयोगकर्ता द्वारा लिखे गए त्वरित क्रम में स्थानांतरित करने के लिए तुलना एल्गोरिदम को अनुमति दें।

uksort($array, 'strcasecmp'); 

आसानी से प्रभाव को प्राप्त करने के लिए:

बहुत सरल strcasecmp() समारोह के साथ इस कम्बाइन (जो दो स्ट्रिंग तुलना करता है और एक> ख के लिए < 0 और> एक के लिए 0 देता है> ख) आप देता है:

ksort($array,SORT_STRING | SORT_FLAG_CASE); 

PHP 5.3 या उससे कम में।

+3

जीसस, php कैसे एक खराब खराब सॉर्टिंग सिस्टम कर सकते हैं? और दस्तावेज़ों के अनुसार: क्रमबद्ध करें ($ शब्द, SORT_STRING | SORT_FLAG_CASE); मानों का एक असंवेदनशील प्रकार करना चाहिए, लेकिन यह काम नहीं करता है: – 7stud

+0

वह पैरामीटर काम करेगा, लेकिन केवल PHP 5.4 में। पीएचपी की उम्र और उपयोग से बहुत सारी त्रुटियां हैं लेकिन हाल के अपडेट वास्तव में भाषा की स्थिरता को मजबूत करने और अन्य भाषाओं का उपयोग करने वाली सुविधाओं को प्रदान करने पर ध्यान केंद्रित कर रहे हैं। – M1ke

+0

कोई कैसे uksort ($ array, 'strcasecmp') को बदल देगा; रिवर्स ऑर्डर में सॉर्ट करने के लिए? – Flion

1

यह मैं कैसे हल कर दिया है (केस असंवेदी) पीएचपी 7 में UTF8 तार के सरणी:

uksort($myarray, function ($a, $b) { 
    $a = mb_strtolower($a); 
    $b = mb_strtolower($b); 
    return strcmp($a, $b); 
}); 

पीएचपी 5.3 के लिए आप अपने खुद के प्रकार समारोह बनाने की जरूरत:

function mySort1($a, $b) { 
    $a = mb_strtolower($a); 
    $b = mb_strtolower($b); 
    return strcmp($a, $b); 
} 
uksort($result['rows'], 'mySort1'); 
संबंधित मुद्दे