Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Settare ed ordinare un array multidimensionale

    E' possibile settare un array del tipo:

    $aa[1][10, 2, 8]
    $aa[2][3, 1, 1]
    $aa[3][5, 2, 3]
    $aa[4][0, 0, 0]
    $aa[5][9, 5, 4]

    e dopo ordinarlo (per il primo valore - per il 2 - per il 3) per far visualizzare:
    10, 2, 8
    9, 5, 4
    5, 2, 3
    3, 1, 1
    0, 0, 0

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: Settare ed ordinare un array multidimensionale

    Originariamente inviato da GaRo73
    E' possibile settare un array del tipo:

    $aa[1][10, 2, 8]
    $aa[2][3, 1, 1]
    $aa[3][5, 2, 3]
    $aa[4][0, 0, 0]
    $aa[5][9, 5, 4]

    e dopo ordinarlo (per il primo valore - per il 2 - per il 3) per far visualizzare:
    10, 2, 8
    9, 5, 4
    5, 2, 3
    3, 1, 1
    0, 0, 0
    Codice PHP:
    $array = array(
                    array(
    10,2,8),
                    array(
    3,1,1),
                    array(
    5,2,3),
                    array(
    0,0,0),
                    array(
    9,5,4)
    );
    echo 
    '<pre>';
    print_r($array);


    $chiavi = array();
    foreach(
    $array as $elm)
        foreach(
    array_slice($elm,0,1) as $v) {
            
    $chiavi[] = $v;
        }

    array_multisort($chiavi,SORT_DESC,$array);
    print_r($array); 

  3. #3
    Scusa Nicola,
    non son riuscito a spiegarmi o non riesco a capire il tuo script.
    Allora io ho una serie di valori (righe) e un serie di altri valori (colonne),
    quindi pensavo di fare un ciclo che mi setti:
    prima le righe ($x 1-2-3 ... n)
    dopo le colonne ($a, $b, $c - una serie di 3 numeri che poi si devono ordinare),

    ES:
    $x = 0;
    while ($x < $n) {
    $x++;
    $aa[$x][$a, $b, $c];
    /// cambia i valori di $a, $b, $c
    }

    quindi al primo giro dovrebbe essere una cosa del genere
    $aa[1][10, 2, 8]
    secondo
    $aa[2][3, 1, 1]
    altri
    $aa[3][5, 2, 3]
    $aa[4][0, 0, 0]
    $aa[5][9, 5, 4]
    ...
    ...
    sempre con un ciclo del tipo:
    $x = 0;
    while ($x < $n) {
    $x++;
    echo"$aa[$x]
    ";
    }

    volevo visualizzare:
    10, 2, 8
    9, 5, 4
    5, 2, 3
    3, 1, 1
    0, 0, 0

    Spero di essere stato chiaro,
    grazie per la collaborazione.

  4. #4
    Ho risolto quasi tutto,
    sbagliavo il modo di settare l'array.

    Ho fatto così:
    $aa[$i][0] = $a;
    $aa[$i][1] = $b;
    $aa[$i][2] = $c;
    $aa[$i][3] = $d;

    poi lo ordino come mi ha detto Nicola:

    $chiavi = array();
    foreach($aa as $elm)
    foreach(array_slice($elm,1,1) as $v) {
    $chiavi[] = $v;
    }
    array_multisort($chiavi,SORT_DESC,$aa);

    ora me li ordina per il secondo valore e va bene,
    come modifico per ordinare per il terzo, quarto ecc.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.