QonosMedlem sedan sep. 2000451 inlägg
Hmm jag må vara trög, men trotts att jag läst manualen så lyckas jag inte med att sortera denna array efter [type].
ksort() gissar jag på att man ska använda, men får ändå inte till det.
Array
(
[0] => Array
(
[name] => typ2
[type] => 2
)
[1] => Array
(
[name] => typ1
[type] => 1
[answer] => Array
(
[0] => dsf
[1] => sdf
[2] => sdf
)
)
[2] => Array
(
[name] => 32425678
[type] => 2
)
)
WiZzLeRMedlem sedan juni 2002369 inlägg
function mu_sort($array, $key_sort) {
$key_sorta = explode(",", $key_sort);
$keys = array_keys($array[0]);
for($m=0; $m < count($key_sorta); $m++){ $nkeys[$m] = trim($key_sorta[$m]); }
$n += count($key_sorta);
for($i=0; $i < count($keys); $i++){
if(!in_array($keys[$i], $key_sorta)){
$nkeys[$n] = $keys[$i];
$n += "1";
}
}
for($u=0;$u<count($array); $u++){
$arr = $array[$u];
for($s=0; $s<count($nkeys); $s++){
$k = $nkeys[$s];
$output[$u][$k] = $array[$u][$k];
}
}
sort($output);
return $output;
}
$array[0]['name'] = "typ2";
$array[0]['type'] = 2;
$array[1]['name'] = "typ1";
$array[1]['type'] = 1;
$array[2]['name'] = "typ3";
$array[2]['type'] = 3;
$sorted = mu_sort($array, "type");
print_r($sorted);
MatteMedlem sedan aug. 20002 970 inlägg
Annars tycker jag det bör funka med usort():
function cmp($a, $b) {
if ($a['type'] == $b['type']) {
return 0;
}
return $a['type'] < $b['type'] ? -1 : 1;
}
usort($array, 'cmp');
WiZzLeRMedlem sedan juni 2002369 inlägg
du menar
function cmp($a, $b)
{
return strcmp($a['type'], $b['type']);
}
$array[0]['name'] = "typ2";
$array[0]['type'] = 2;
$array[1]['name'] = "typ1";
$array[1]['type'] = 1;
$array[2]['name'] = "typ3";
$array[2]['type'] = 3;
usort($array, "cmp");
MatteMedlem sedan aug. 20002 970 inlägg
Nej, jag menar:
function cmp($a, $b) {
if ($a['type'] == $b['type']) {
return 0;
}
return $a['type'] < $b['type'] ? -1 : 1;
}
$array[0]['name'] = "typ2";
$array[0]['type'] = 2;
$array[1]['name'] = "typ1";
$array[1]['type'] = 1;
$array[2]['name'] = "typ3";
$array[2]['type'] = 3;
usort($array, "cmp");
Då kan du även sortera numeriska värden. Med strcmp kommer 2 att vara större än 12.
WiZzLeRMedlem sedan juni 2002369 inlägg