2012-02-05 20 views
8

tengo una matriz bidimensional y quiero enviar valores a ella con un ciclo while;Php empujando valores a una matriz bidimensional

$arr[0][1] = 1. value 
    $arr[0][2] = 2. value 

i ve intentó

while($zRow = mysql_fetch_array($zQuery)) 
    { 
    $props[]['name'] =$zRow['name']; 
    $props[]['photo'] =$zRow['thumbnail']; 
    } 

este bucle empuja nombre a $ apoyos [0] [nombre] y la miniatura para $ apoyos [1] [foto]

también intenté

$j = 0; 
    while($zRow = mysql_fetch_array($zQuery)) 
    { 
    $props[$j]['name'] =$zRow['name']; 
    $props[$j]['photo'] =$zRow['thumbnail']; 
    $j+=1;  
    } 

que funciona pero con esto cuando uso el bucle Foreach más tarde, crea problemas como "Tipo de compensación ilegal"

y aquí está mi foreach bucle

foreach($props as $no) 
    { 
     echo $props[$no]['name']; 
    } 

ahora mis preguntas; 1) ¿Hay alguna otra forma de bucle while con variable $ j como array_push para matrices de 2 dimensiones 2) ¿Cómo puedo usar bucle foreach para matrices de 2 dimensiones

Respuesta

13

podría cambiar el primer bucle a lo siguiente:

while($zRow = mysql_fetch_array($zQuery)) 
{ 
    $row = array(); 
    $row['name'] = $zRow['name']; 
    $row['photo'] = $zRow['thumbnail']; 
    $props[] = $row; 
} 

Su método también funciona, pero es necesario que la variable adicional.

En el segundo bucle, lo que realmente necesita hacer es:

foreach($props as $index => $array) 
{ 
    echo $props[$index]['name']; 
    // OR 
    echo $array['name']; 
} 
+0

gracias por su respuesta. – Malixxl

4

Empujar nada sobre una matriz con $myArray[] = 'foo' incrementará el contador de la matriz

Para una matriz multidimensional, debe rellenar la matriz "interna", luego empújela a la matriz "exterior" (en su caso $props).

while($zRow = mysql_fetch_array($zQuery)) { 
    $data = array('name' => $zRow['name'], 'photo' => $zRow['thumbnail']); 
    $props[] = $data; 
} 

Para iterar sobre matrices multidimensionales cuya profundidad se conoce:

foreach ($props as $prop) { 
    foreach ($prop as $key => $value) { 
     echo "{$key} => {$value}" . PHP_EOL; 
    } 
} 

Si la profundidad de la anidación no se conoce, puede que tenga que utilizar una función recursiva para recopilar los datos.

+0

y cómo puedo usar foreach para las matrices de 2 dimensiones? – Malixxl

Cuestiones relacionadas