2011-10-06 18 views
8

Estoy tratando este código:No se puede utilizar un valor escalar como una matriz

for ($x = 0; $x < $numCol; $x++) { 
    for ($i = 0; $i < $numRows; $i++) { 
     $arr.$x[] = $todas[$i][$x]."\n"; //problem here 
    } 
} 

echo $arr0[0]; 
echo $arr1[0]; 
... 

pero me da este warning: Cannot use a scalar value as an array

y los ecos no hacer nada. Por qué ? y cual es la solución ?

Respuesta

11

Esto es lo que piensa que quiere hacer. Reemplazar su línea de //problem here con:

${'arr' . $x}[] = $todas[$x][$i]."\n"; 

Pero yo recomendaría fuertemente en contra de esto. Solo usa tu matriz bidimensional.

1

Cuando se escribe $arr.$x[], que es igual a $arr[$x][]

Trate de reemplazar sus ecos por

echo $arr[0][0]; 
echo $arr[1][0]; 
5

Creo que quería decir: ${'arr'.$x}[] en lugar de $arr.$x[].

$arr.$x[] 

concatenará la representación de cadena de $ matriz y $ x juntos por lo que terminan con algo como 'Array0'[] = ... en lugar de $arr0[]

Cuestiones relacionadas