Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472

    ordinare un array conservando l'indice dell'originale

    Vorrei sapere se esiste una funziona predefinita per fare una cosa del genere:
    mi spiego con un esempio perché è più facile da comprendere.

    Ho un array $a con questi valori
    $a[0]=45;
    $a[1]=39:
    $a[2]=50:
    $a[3]=37;

    quello che voglio fare è ottenere un array $b così fatto:
    $b[0]=37;
    $b[1]=39;
    $b[2]=45;
    $b[3]=50;
    cioè ordinarlo in senso crescente.
    Ma oltre a questo ho bisogno di un terzo array che mi recuperi la posizione iniziale:
    $c[0]=3; (cioè quello che ora è $b[0] che vale 37, prima dove stava come indice di $a?)
    $c[1]=1;
    $c[2]=0;
    $c[3]=2;

    Spero di essere stato sufficientemente chiaro!
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    up

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non hai bisogno di tutti quegli array.
    Usi asort per ordinare l'array e mantenere gli indici e array_search per sapere la posizione.

    Codice PHP:
    $a[0]=45;
    $a[1]=39;
    $a[2]=50;
    $a[3]=37;

    echo 
    '<pre>';
    print_r($a);
    asort($a);
    print_r($a);

    echo 
    $posizione37 array_search(37,$a); //3 

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    472
    Sì ma 2 valori uguali non li contempla!

    Se io houna cosa del genere
    $a[0]=40;
    $a[1]=40;
    $a[2]=39;
    $a[3]=39;

    e cerco array_search (40,$a) non mi dà niente!

    E poi ho visto che la funziona asort() non mi dà un nuovo array...
    A me servirebbe qualcosa tipo sort() però avrei bisogno di un altro supporto che mi indicasse la posizione, ma non con array_search perchè naturalmente i valori che assumono le varie posizioni del vettore possono anche essere uguali!

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se vuoi crearti una coppia dell'array $a fai

    $b = $a;
    asort($b);

    poi se leggi le funzioni che ti ho linkato

    array_search
    Se ago viene ritrovato in pagliaio più di una nolta, viene restituita la prima chiave trovata. Per restituire le chiavi di tutti i valori, utilizzare array_keys() con il parametro opzionale valore_ricerca.

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.