Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ordinamento array

  1. #1
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592

    ordinamento array

    Ho un array con tutti valori che iniziano con "+" o "-"
    Vorrei fare delle operazioni di raggruppamento, ma ero convinto che tutti i + fossero prima di tutti i - ma non è così.

    Con natsort riesco ad ordinarli prima tutti i + poi tutti i - oppure può esserci qualche eccezione? io non ne vedo ma ho paura che quello che faccio dopo va a farsi friggere:
    cioè vorrei, dopo che ho messo tutti i + all'inizio:
    +tizio +caio +sempronio -ciccio -puzzo -pollo

    trasformare la stringa/array così:
    positivi: tizio, caio, sempronio
    negativi: ciccio, puzzo, pollo.
    Ma questa parte diventa facile una volta "ordinati" tutti i + e i -

    grazie a chi mi darà una mano

  2. #2
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    e se fai qualcosa del genere?
    Codice PHP:
    <?php
    $array_originale 
    = array("+tizio""+caio""junk""+sempronio""-ciccio""-puzzo""-pollo");

    list(
    $array_plus$array_minus$array_junk) = sort_my_array($array_originale);

    print 
    "<pre>";
    print 
    "ARRAY +: <br /><br />";
    print_r($array_plus);
    print 
    "ARRAY -: <br /><br />";
    print_r($array_minus);
    print 
    "ARRAY ELEMENTI NON RICONOSCIUTI: <br /><br />";
    print_r($array_junk);
    print 
    "</pre>";

    function 
    sort_my_array($array){
        
    $array_plus = array();
        
    $array_minus = array();
        
    $array_junk = array();
        foreach(
    $array as $k => $v){
            if(
    substr($v01) === "+"){
                
    $array_plus[] = $v;
            }elseif(
    substr($v01) === "-"){
                
    $array_minus[] = $v;
            }else{
                
    $array_junk[] = $v;
            }
        }
         return array(
    $array_plus$array_minus$array_junk); 
    }
    ?>
    eXvision

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    il mio dubbio è che non li metta in ordine.. bbrrr..
    però ora lo provo, sicuramente è molto elaborato e non volevo "lavorarci" (ci hai lavorato TU ) così tanto

  4. #4
    Utente di HTML.it L'avatar di Sei
    Registrato dal
    Oct 2016
    Messaggi
    37
    Ciao,

    oltre alla corretta risposta di brodik, ti propongo anche la variante con espressioni regolari.

    Codice PHP:
    $array_exemple = array('+mario''+giacomo''+elisa''senza_segno''-luca''-marco''-filippo');

    $array_plus preg_grep("/^(\+){1}.*$/"$array_exemple);
    $array_minus preg_grep("/^(\-){1}.*$/"$array_exemple);
    $array_no_operator preg_grep("/^((?!\+|\-).)*$/"$array_exemple); 

    Se non vuoi utilizzare 3 nuovi array, puoi usarne semplicemente uno associativo con relative chiavi +,- e senza segno.
    Codice PHP:
    $array_exemple = array('+mario''+giacomo''+elisa''senza_segno''-luca''-marco''-filippo');
    $associative_array = array();

    $associative_array['+'] = preg_grep("/^(\+){1}.*$/"$array_exemple);
    $associative_array['-'] = preg_grep("/^(\-){1}.*$/"$array_exemple);
    $associative_array['senza_operatore'] = preg_grep("/^((?!\+|\-).)*$/"$array_exemple);

    print_r($associative_array); 

    Ciao.
    Ultima modifica di Sei; 18-06-2019 a 16:22 Motivo: </br> dopo tag code php mancante

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