Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    array multidimensionale dinamico

    Devo creare un array multidimensionale come il seg. esempio:
    $data = array(
    array('Jan', 40, 5, 10), array('Feb', 90, 8, 15),
    array('Mar', 50, 6, 10), array('Apr', 40, 3, 20),
    array('May', 75, 2, 10), array('Jun', 45, 6, 15),
    );

    Il contenuto però è variabile, cioè non conosco a priori il numero dei sottoarray che lo compongono e il valore dei 'campi' ->(Jan 40 5 10). I dati li prelevo da db qdi mi sn costruita una procedura che riempie automaticamente qsto array multidimensionale:

    for ($i=0; $i< mysql_num_rows($result); $i++){
    $id=mysql_result($result,$i,"id");
    $label_campo=mysql_result($result,$i,"label");
    /*
    echo "
    ".$label_camp;
    echo "".get_sms_stato($prefisso_sms,$id,"0");
    echo "".get_sms_stato($prefisso_sms,$id,"1");
    echo "".get_sms_stato($prefisso_sms,$id,"2");
    */
    $data = array(
    array($label_campo, get_sms_stato($prefisso_sms,$id,"0"), get_sms_stato($prefisso_sms,$id,"1"), get_sms_stato($prefisso_sms,$id,"2")),
    );

    }

    La funzione get_sms_stato mi stampa la quantità da inserire.
    Qsto multiarray lo utilizzo nella classe phplot-5.0rc2 che mi creerà un grafico a barre .... il problema è che mi visualizza solo una barra, cioè l'ultima istanza del record che passo nella costruzione dell'array... Perchè??? Sbaglio qcosa nella costruzione?
    Thxxx

  2. #2

    Re: array multidimensionale dinamico

    Originariamente inviato da Simoxxx
    $data[] = array(
    array($label_campo, get_sms_stato($prefisso_sms,$id,"0"), get_sms_stato($prefisso_sms,$id,"1"), get_sms_stato($prefisso_sms,$id,"2")),
    );
    Ciao Simo, dicendo $data=array(..) in pratica $data viene sovrascritto ogni volta con l'ultimo nuovo array, mentre tu devi concatenarlo a quelli già presenti.

    Le quadre dopo $data servono proprio a questo, per concatenare un altro elemento ad un array. Spero di esserti stato utile.


  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525

    neanke...

    No, avevo pensato ank'io al fatto di sovrascrivere la variabile, qdi ho tentato di inserire indici o quadre vuote ma niente....
    Con la tua soluzione è qsto il risultato della stampa con print_r

    Array d'esempio

    Array ( [0] => Array ( [0] => Jan [1] => 40 [2] => 5 [3] => 10 ) [1] => Array ( [0] => Feb [1] => 90 [2] => 8 [3] => 15 ) )

    Array dinamico

    Array ( [0] => Array ( [0] => Array ( [0] => test_csv_2005-12-01 15:59:03 [1] => 6 [2] => 0 [3] => 0 ) ) [1] => Array ( [0] => Array ( [0] => test_csv_2005-12-12 17:36:08 [1] => 8 [2] => 0 [3] => 0 ) ) )

    Invece dovrebbe essere:
    Array ( [0] => Array ([0] => test_csv_2005-12-01 15:59:03 ... ecc

  4. #4
    quindi c'è un terzo livello di array nn desiderato, ma sembre poter arrivare solo da get_sms_stato, prova a postarla

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    No, la funzione non c'entra nulla, mi restituisce un numero in base al valore passato....
    Usando la sintassi
    $data[]= ... all'interno del ciclo,mi crea il terzo livello di array

  6. #6
    se in un ciclo scrivi
    $data = qualunque cosa
    a fine ciclo la variabile $data avrà sempre e solo l'ultimo valore del ciclo.

    inoltre il famigerato livello indesiderato sei tu stesso a creartelo scrivendo 2 volte array

    $data = array(array(...))

    prova così


    codice:
    $data = array();
    for ($i=0, $j = mysql_num_rows($result); $i< $j; $i++){
    	$id=mysql_result($result,$i,"id");
    	$label_campo=mysql_result($result,$i,"label");
    	array_push(
    		$data, 
    		array(
    			$label_campo, 
    			get_sms_stato($prefisso_sms,$id,"0"), 
    			get_sms_stato($prefisso_sms,$id,"1"), 
    			get_sms_stato($prefisso_sms,$id,"2")
    		)
    	);
    }
    P.S. mi sa che conosco quelle funzioni sms ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    525
    Grazie! Funziona!
    Cmq, come fai a dire che conosci quel tipo di funzione?

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.