Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    125

    riordinare array multipli

    Codice PHP:
    $values = [
        [
    321],
        [
    123],
    ];

    call_user_func_array(
        
    'array_multisort',
        
    $values
    );
    print_r($values[0]);
    print_r($values[1]); 
    Output:

    codice:
    Array
    (
        [0] => 3
        [1] => 2
        [2] => 1
    )
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    Io però mi avrei aspettato questo risultato

    codice:
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )
    Array
    (
        [0] => 3
        [1] => 2
        [2] => 1
    )
    Cosa c'è che non va?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2020
    Messaggi
    9
    Personalmente mi sembra corretto.

    Il primo valore del primo array é 3 e quindi restituisce array[0]=3, il primo valore del secondo array é 1 e quindi array[0]=1

    Se voglio ottenere il risultato che hai indicando dovrei scrivere

    $values = [
    [1, 2, 3],
    [
    3, 2, 1],
    ];
    Il web é un'opportunità ... non perderla
    Kubito.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    125
    Che risposta è?
    Comunque

    Codice PHP:
    echo "Metodo 1\n";

    $arr1 = [321];
    $arr2 = [123];
    array_multisort(
        
    $arr1,
        
    $arr2
    );
    print_r([
        
    $arr1,
        
    $arr2
    ]);

    echo 
    "Metodo 2\n";

    $arrs = [//main-array
        
    [321],//sub-array
        
    [123],//sub-array
        //...
    ];// questa variabile potrebbe anche contenere i record di una tabella prelevata da un database (ogni sub-array rappresenta un record)
    call_user_func_array(
        
    'array_multisort',
        
    $arrs
    );
    print_r($arrs); 
    codice:
    Metodo 1
    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )
    
        [1] => Array
            (
                [0] => 3
                [1] => 2
                [2] => 1
            )
    
    )
    Metodo 2
    Array
    (
        [0] => Array
            (
                [0] => 3
                [1] => 2
                [2] => 1
            )
    
        [1] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 3
            )
    
    )
    Il metodo 1 mi soddisfa.
    Il metodo 2 invece non mi dà il risultato desiderato: non ordina un bel niente.

    Allora perchè non usare il metodo 1?

    Perchè per ogni array bisogna creare una nuova variabile: $arr3, $arr4...

    Oppure, ancora peggio, si potrebbe avere un main-array con un numero indefinito di sub-array: ad esempio i record di una tabella un database: possono essere 1, 2, 5000...(vedere la variabile $arrs del metodo 2)
    Ultima modifica di astros3; 06-03-2020 a 19:10

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 © 2020 vBulletin Solutions, Inc. All rights reserved.