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

    Ciclo for per assegnare variabili ad array tramite PHP

    Ciao,

    mi sono arreso, dopo tante prove non riesco a venirne a capo.
    Devo assegnare un valore variabile a un nome variabile all'interno di un array.
    Ho il seguente codice:

    $arr_val=array(
    "".${'row'.$r.'Column'.$c}.""=>"".${'row'.$r.'colu mn'.$c}."",
    );

    Siccome la dimensione dell'array può variare, dovrei fare un ciclo for in modo da dare un valore a $r e $c.
    In pratica dovrei popolare l'array in qesto modo:

    row1Column1 => valore di row1column1
    row1Column2 => valore di row1column2

    e cosi via.
    Quando cerco di fare il doppio ciclo per $r e $c come da codice qui sotto, mi dà sempre un errore:

    $arr_val=array(
    for($r = 1; $r <= $table_rows; $r++){
    for($c = 1; $c <= $table_columns; $c++){


    "".${'row'.$r.'Column'.$c}.""=>"".${'row'.$r.'colu mn'.$c}."",
    }
    }
    );

    Come potrei ovviare?
    Grazie

    Saluti
    Francesco

  2. #2
    Per quale motivo vuoi fare una cosa del genere?

    Perchè non usi semplicemente un array associativo invece di gestire così tante variabili?

    Da dove vengolo le variabili a cui stai accedendo?

    Detto ciò:


    Codice PHP:
    $arr_val = array();
     
    for (
    $r 1$r <= $table_rows$r++) {
        for (
    $c 1$c <= $table_columns$c++) {
            
    $field 'row' $r 'Column' $c;
            
    $valueName 'row' $r 'column' $c;
            
    $arr_val[$field] = $$valueName;
        }
    }
     
    print_r($arr_val); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    192
    Ciao webdition mi sono perso tra il codice, ma come filippo.toso mi chiedo il perché poiché sembra codice accessibile non un qualcosa di segreto.
    Se la variabile è a scopo globale puoi creare nel tuo ambito globale e da php 8.1 o superiore significa $GLOBALS solo di tipo array.
    Qui è un pseudo codice senza cicli "for" ma che usa la referenza di una variabile e inoltre i vari passaggi sono passo passo.
    Codice PHP:
    <?php
    $r 
    NULL;
    $c NULL;
    $var NULL;
    $arr NULL;
    unset(
    $r$c$var$arr);
    $r 1;
    $c 1;
    if(!empty(
    $GLOBALS) && is_array($GLOBALS)) {
    //${'row'.$r.'Column'.$c} = 0;
    $var 'row' $r 'Column' $c;
    $GLOBALS[$var] = 'valore1';
    $arr = array($var => &$GLOBALS[$var]);

    $r 1;
    $c 2;
    $var 'row' $r 'Column' $c;
    $GLOBALS[$var] = 'valore2';

    $arr $arr + array($var => &$GLOBALS[$var]);
    var_dump($GLOBALS);
    } else {
    echo 
    'devi cambiare applicazione';
    }
    ?>
    Utilizzo il var_dump su $GLOBALS per mostrare la referenza sia di $GLOBALS[$var] sia $GLOBALS['arr'] e inoltre da php 8.1 o superiore $GLOBALS è già una referenza. L'unica accortezza è il ricevitore dovrebbe convertire da referenza a per valore poiché la referenza di calcoli come $refence++ può essere indefinita o peggio overflow.
    Quindi in questo esempio vedrai la sintassi Variable Variables adattata direttamente nel super globale $GLOBALS invece della creazione della variabile
    Codice PHP:
    ${'stringa'} = 'valore stringa'
    che crea $stringa o $GLOBALS['stringa'], certo $var viene sovrascritta poiché occorre creare $GLOBALS[$var] e poi $arr = array($var => $GLOBALS) che visto è comunque lo scopo globale è ridondante il ricevitore dovrebbe effettuare il foreach per prefisso row direttamente da $GLOBALS tramite lista bianca di totale rows e table columns.

  4. #4
    Ciao Filippo,
    ho provato il tuo codice e funziona alla grande!!!!
    Ti ringrazio infinitamente, mi hai risolto il problema

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.