2012-01-16 20 views
5

के उसी क्रम का उपयोग करके एक सरणी मैं पोकर होल्डम हाथ शुरू करने वाले 2 सरणियों की है।क्रमबद्ध एक और एक

एक अव्यवस्थित मूल्यों से बना है।

$array1 = array("65s","AA","J9s","AA","32s"); 
//the cards can be repeated here as you see there are 2 "AA" 

और अन्य एक है कि पहली सरणी ऑर्डर करने के लिए एक मॉडल के रूप में इस्तेमाल किया जाना चाहिए:

$array_sorted = array("AA","KK","AKs"...); 
//here the cards are not repeated 

मैं में इस्तेमाल किया प्रकार के साथ फिर से आदेश के लिए $ array1 चाहते हैं $ array_sorted,

मैं यह कैसे पूरा करने के लिए पर पूरी तरह से पता नहीं है

$array1 = array("AA","AA","J9s","65s","32s"); 

:

यह एक सरणी लौट जाना पसंद करते हैं। शायद कुछ "उपयोगकर्ता परिभाषित सॉर्टिंग विधि" का उपयोग करके? वास्तव में नहीं पता।

+0

मुझे यकीन है कि मुझे समझ में नहीं हूँ। क्या आप बस एंटॉर्ट नहीं चाहते हैं? http://us2.php.net/manual/en/function.asort.php – MetalFrog

+0

मैं asort नहीं लगता कि() चाल करना होगा, मैं आदेश का उपयोग कर $ में array_sorted द्वारा $ array1 सॉर्ट करने के लिए की जरूरत है। – KingBOB

+0

आह, गॉचा, आप तब यूजर चाहते हैं। http://us2.php.net/usort – MetalFrog

उत्तर

7

आप सही हैं, और usort "उपयोगकर्ता परिभाषित विधि छँटाई" आप देख रहे हैं है। कुछ इस तरह आप के लिए काम करना चाहिए:

पीएचपी> = 5,3

// Firstly this will be faster if the hands are the keys in the array instead 
// of the values so we'll flip them with array_flip. 
$array_sorted = array_flip(array('AA', 'KK', 'AKs', /* ... */)); 
// => array('AA' => 0, 'KK' => 1, 'AKs' => 2, ...) 

// your hands 
$array1 = array('65s', 'AA', 'J9s', 'AA', '32s'); 

$array1_sorted = usort(
    $array1, 

    // The comparison function 
    function($a, $b) { 
    // If $a is AA and $b is J9s then 
    // $array_sorted[ 'AA' ] - $array_sorted[ 'J9s' ] 
    // will evaluate to a negative number, telling PHP that $a (AA) 
    // is "smaller" than $b (J9s) and so goes first. 
    return $array_sorted[ $a ] - $array_sorted[ $b ]; 
    } 
); 

पीएचपी < 5,3

function sorting_function($a, $b){ 
    $array_sorted = array_flip(array('AA', 'KK', 'AKs', /* ... */)); 

    return $array_sorted[ $a ] - $array_sorted[ $b ]; 
} 

$array1 = array('65s', 'AA', 'J9s', 'AA', '32s'); 

$array1_sorted = usort($array1, 'sorting_function'); 
+0

मैं इसे परीक्षण कर रहा हूँ, लेकिन यह इस त्रुटि देता है के बाद से मैं इसे उपयोग कर रहा हूँ एक वर्ग की एक विधि में: पार्स त्रुटि: लाइन 1312 – KingBOB

+0

पर /Applications/MAMP/www/class2.php में सिंटेक्स त्रुटि, अप्रत्याशित T_FUNCTION क्या PHP का संस्करण आप चल रहे हैं? – afuzzyllama

+0

मैं गुमनाम कार्यों का समर्थन नहीं करता, समारोह के बाहर 'usort की() की घोषणा' और और यह इस 'usort ($ array1," function_name ") की तरह फोन 5.2.6 – KingBOB

संबंधित मुद्दे