2011-09-12 33 views
6

Tôi muốn có mảng $ sort_flags này có sẵn trong hàm compare_by_flags, nhưng tôi không tìm thấy cách này, có thể không?Làm cách nào để thêm tham số bổ sung vào hàm usort/uasort cmp?

public function sort_by_rank(array $sort_flags = array()) { 
    uasort($this->search_result_array, array($this, 'compare_by_flags')); 
} 

private static function compare_by_flags($a, $b) { 
    // I want to have this $sort_flags array here to compare according to those flags  
} 
+0

Bạn sử dụng phiên bản php nào? – zerkms

+0

5.2, nhưng sẽ nâng cấp sớm – Riesling

Trả lời

7

Nếu bạn sử dụng php < 5.3 rồi bạn chỉ có thể sử dụng các biến mẫu:

public function sort_by_rank(array $sort_flags = array()) { 
    $this->sort_flags = $sort_flags; 
    uasort($this->search_result_array, array($this, 'compare_by_flags')); 
} 

private static function compare_by_flags($a, $b) { 
    // I want to have this $sort_flags array here to compare according to those flags  
} 

khác - đóng cửa sử dụng:

public function sort_by_rank(array $sort_flags = array()) { 
    uasort($this->search_result_array, function($a, $b) use ($sort_flags) { 
     // your comparison 
    }); 
} 
+0

cảm ơn, bằng cách sử dụng cách tiếp cận đầu tiên và sẽ chuyển đổi ngay sau khi chúng tôi nâng cấp php – Riesling

-1

Bạn có thể thiết lập nó như là thuộc tính tĩnh lớp, như thế này:

 
public function sort_by_rank(array $sort_flags = array()) { 
    self::$_sort_flags = $sort_flags; 
    uasort($this->search_result_array, array($this, 'compare_by_flags')); 
} 

private static function compare_by_flags($a, $b) { 
    // Read self::$_sort_flags 
    // I want to have this $sort_flags array here to compare according to those flags  
} 

Ngoài ra bạn có thể thử này, tính đến PHP 5,3

 
uasort($array, function($a, $b) { 
    self::compare_by_flags($a, $b, $sort_flags); 
}); 
+0

Mã chính xác này sẽ không hoạt động, miễn là phạm vi biến chức năng ẩn danh không có ý tưởng '$ sort_flags' là gì. – zerkms

2

Bạn không đề cập đến những gì bạn muốn đạt được bằng cách thông qua các biến $sort_flags, nhưng bạn có thể tìm this answer của tôi có ích (hoặc như nó đứng, hoặc như là một ví dụ nếu bạn muốn đạt được điều gì đó khác).

Các vấn đề liên quan