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.