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

    piccolo problema con array

    ciao a tutti.
    Probabilmente qualcuno sa aiutarmi perchè io mi sono proprio incartato.
    Ho un array con dei valori, di cui alcuni vuoti(più di uno).
    vorrei riuscire a prendere solo il pezzo di array prima del primo elemento vuoto, ignorando tutto il resto.
    Cioè per capirci io ho:

    Array
    (
    [0] => 001 p6
    [1] => 002 p2
    [2] => 003 p1
    [3] => 004 p3
    [4] => 005 p4
    [5] => 006 p6
    [6] =>

    [7] => n_soste_totali
    [8] => tempo_totale(h.m)
    [9] => t_servizio_totale(h.m)
    [10] => t_attesa_totale(h.m)
    [11] => lunghezza_totale(km)
    [12] => carico_delivery_totale
    [13] => carico_delivery_totale
    [14] => carico_delivery_totale
    [15] => costo_servizio(Euro)
    [16] => coeffiente
    [17] => slittamento
    [18] =>
    )

    e vorrei

    Array
    (
    [0] => 001 p6
    [1] => 002 p2
    [2] => 003 p1
    [3] => 004 p3
    [4] => 005 p4
    [5] => 006 p6
    )

    come diamine faccio?

    Lo so che dovrebbe essere semplice ma mi sono proprio incartato

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    le chiavi sono sempre numeriche e progressive?

    se si, puoi fare semplicemente un

    $bla = array_chunk($a,array_search('',$a)-1,true);
    print_r($bla[0]);

    altrimenti fai un ciclo, aggiungendo ogni chiave=>valore in un nuovo array, e ti fermi se il valore e' vuoto

  3. #3
    si, le chiavi sono progressive e numeriche.
    Purtroppo il codice mi ritorna l'errore:
    Size parameter expected to be greater than 0
    ho provato a lavorare un po' con array_search(perchè immagino il problema sia lì) ma non ritorna mai nessun valore...

    non vorrei che il vettore magari non sia realmente vuoto ma contenga \n o \t (perchè il vettore risultante è derivato da un parsing). ha senso questa cosa?
    nb. cmq neanche con i due sopracitati caratteri ho risolto

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    vai un var_dump($array) dell'array iniziale, dovresti vedere se e' una stringa vuola, null, false, oppure c'e' qualcosa tra le virgolette. Magari e' solo uno spazio.. se e' \n o \t dovresti vedere un a capo o uno spazio piu' lungo.

    Nel dubbio, predi il valore, spezzalo in caratteri singoli e applica ord su ognuno: ti dira' il carattere ascii che c'e' dentro.

  5. #5
    allora, prima di tutto grazie mille per l'efficienza e per l'aiuto.
    Poi ho fatto come hai detto ed è saltato fuori che sono due caratteri: 13 e 10 cioè un carriage return e un line feed.
    Sperando di ottenere sempre la stessa struttura dal parsing(in teoria sì) come faccio a fargli riconoscere quei due caratteri? con il chr()?

  6. #6
    ok,ho risolto usando quello che mi avevi detto all'inizio e chr().

    Se a qualcuno interessa questa è la soluzione:

    Codice PHP:
    $skip chr(13).chr(10);  
    $final array_chunk($ris,array_search($skip,$ris),true); 
    grazie mille ancora bubi1

  7. #7
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Beh, potevi anche mettere "\r\n" (attento al fatto che ho usato gli apici doppi, non singoli)

    Ma va bene anche chr.

    Prego

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.