array_multisort ve dinamik değişken seçenekleri

2 Cevap

Array_multisort ve her şey harika çalışıyor herhangi bir diziyi sıralamak için çalışıyor Im. Ancak, benim komut koşullara dayalı, ben seçeneklerini değiştirmeniz gerekir. Yani ne ben bugüne kadar bu:

array_multisort(
 $sort1,SORT_ASC,
 $sort2,SORT_ASC,
 $sort3,SORT_ASC, 
 $arraytosort
);

ve ne istiyorum bu gibi bir şeydir:

$dynamicSort = "$sort1,SORT_ASC,$sort2,SORT_ASC,$sort3,SORT_ASC,";

array_multisort(
 $dynamicSort, 
 $arraytosort
);

Herhangi bir öneriniz?

2 Cevap

Sen call_user_func_array kullanmayı deneyebilirsiniz. Ama önce bir yerleşik işlevi üzerinde hiç denemedim. İşte bir örnek:

$dynamicSort = "$sort1,SORT_ASC,$sort2,SORT_ASC,$sort3,SORT_ASC";
$param = array_merge(explode(",", $dynamicSort), array($arrayToSort))
call_user_func_array('array_multisort', $param)

Ben bu cevap ile aynı sorun vardı: "değişken # 1, bir dizi ya da bir çeşit bayrak olması bekleniyor"

Aynı sorunu yaşıyorum kimse yerine bu deneyin için:

$dynamicSort = array(&$sort1, SORT_ASC, &$sort2, SORT_ASC, &$sort3, SORT_ASC); 
$param = array_merge($dynamicSort, array(&$arrayToSort));
call_user_func_array('array_multisort', $param);

Note that i have used the reference to my variables "&$" instead of $. This works great in php 5.3 but may cause error in 5.2 due to a bug.