[PHP] Array sorteren op deel van Key mbv usort

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Hallo, ik ben bezig met een script waarmee je variabele formulieren kan maken. Nu wil ik de uitkomst van een formulier (staat in $_POST) netjes weergeven. De namen van de velden bestaan uit:

1 en 2: Type van vraag (TF = textfield PD is pulldown, enz)
3: Is de vraag verplicht (Y/N)
> 3: ID van de vraag

Dit kan de uitkomst van een post zijn:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Array
(
    [form_id] => 7
    [set_id] => 3
    [answer_set_begin] => 1051969066
    [TFY25] => Mijn naam
    [VPY26] => Array
        (
            [LS] => 
            [TF] => Woonplaats
        )

    [TFN27] => 6
    [DTN28] => Array
        (
            [DA] => 03
            [MO] => 05
            [YE] => 2003
            [HO] => 15
            [MI] => 37
        )

    [TAN29] => Nee
    [TPN30] => 
    [TFN32] => 
    [DAN34] => Array
        (
            [DA] => 03
            [MO] => 05
            [YE] => 2003
        )

    [TFN35] => 
    [TAN36] => 
    [RBY31] => 19
    [go] => forward
)


Ik heb al iets geprobeerd met usort maar dat wil niet werken:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
function SortCommand($a, $b) {
    $qid_a = substr($a, 3);
    $qid_b = substr($b, 3);
    if ($qid_a == $qid_b)
        return 0;
    return ($qid_a > $qid_b) ? -1 : 1;
}

function ShowHidden() {
    echo "\n";
    $post_sorted = $_POST;
    usort($post_sorted, "SortCommand");
    print_r($post_sorted);
    foreach($post_sorted AS $field => $value) {
        $type = substr($field, 0, 2);
        $required = substr($field, 2, 1);
        $question_id = substr($field, 3);
        if(!is_array($value)) {
            echo '            <input type="hidden" name="'.$field.'" value="'.stripslashes($value)."\">\n";
        } else {
            foreach($value AS $w => $value_w)
                echo '            <input type="hidden" name="'.$field.'['.$w.']" value="'.stripslashes($value_w)."\">\n";
        }
    }
}
?>

Dit is hier de uitkomst van:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Array
(
    [0] => forward
    [1] => Mijn naam
    [2] => Array
        (
            [LS] => 
            [TF] => Woonplaats
        )

    [3] => Array
        (
            [DA] => 03
            [MO] => 05
            [YE] => 2003
            [HO] => 15
            [MI] => 44
        )

    [4] => 1051969491
    [5] => 7
    [6] => 3
    [7] => 6
    [8] => Nee
    [9] => 
)

Hiermee wordt het dus helemaal vern**kt. Ik heb al gezocht maar ik kan niets vinden. Weten jullie misschien iets.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Waarom gebruik je niet gewoon ksort :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
drm schreef op 03 May 2003 @ 16:10:
Waarom gebruik je niet gewoon ksort :?
Als je mijn bericht had gelezen zag je dat ik op een deel van de key moet sorteren en dat kan natuurlijk niet met ksort...

[ Voor 28% gewijzigd door Slagroom op 03-05-2003 16:51 ]


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

ah, ok, sorry had ik overheen gelezen. Dan moet je dus op keys sorteren en niet op waarden. Als jij de manual had gelezen was je daar ook achter gekomen ;)
http://nl2.php.net/manual/en/function.uksort.php

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
...sorry... had hier iets doms neer gezet...

[ Voor 95% gewijzigd door Slagroom op 04-05-2003 11:43 ]


Acties:
  • 0 Henk 'm!

  • Slagroom
  • Registratie: Juni 2001
  • Laatst online: 05-10-2024
Ha! Hij werkt nu wel! Dank je!
PHP:
1
2
3
4
5
6
7
8
9
10
11
function SortCommand($a, $b) {
    $qid_a = substr($a, 3);
    $qid_b = substr($b, 3);
    if ($qid_a == $qid_b)
        return 0;
    return ($qid_a > $qid_b) ? -1 : 1;
}

$sorted = $_POST;
uksort($sorted, "SortCommand");
print_r($sorted);
Pagina: 1