Ver Mensaje Individual
  #6 (permalink)  
Antiguo 11/02/2011, 10:52
Avatar de TheRD
TheRD
 
Fecha de Ingreso: junio-2009
Mensajes: 120
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Error array_merge

Código PHP:
Ver original
  1. Array ( [server_protocol] => http ) Array ( [server_domain] => localhost ) Array ( [server_path_to] => b ) Array ( [server_port] => 80 )

Sí reescribe la variable (ha imprimido un array por cada vez que ha recorrido el bucle, en lugar de ir sumándolos y que al final quede un array con todos los valores), pues el resultado final debería ser:

Código PHP:
Ver original
  1. Array ( [server_protocol] => http [server_domain] => localhost [server_path_to] => b [server_port] => 80 )

Y no solo uno de los valores, ergo, sí, se reescribe. Cuando pasas una variable por un bucle y le vas asignando un valor se va reescribiendo, no agregando.

He probado a hacer print_r($config) dentro del bucle while y hasta ahí tiene los valores. Una vez sale del while (misteriosamente) ya no los tiene.

Código PHP:
Ver original
  1. function get_config_values(){
  2.     global $db;
  3.     $query = $db->sql_query("SELECT * FROM bl_config");
  4.     $config = array();
  5.     while ($result = $db->fetchfield($query)) {
  6.         $config = array_merge((array)$config,array(
  7.             $result['config_name']  =>  $result['config_value'],
  8.         ));
  9.     }
  10.         print_r($config);
  11. }

No imprime nada.

Código PHP:
Ver original
  1. function get_config_values(){
  2.     global $db;
  3.     $query = $db->sql_query("SELECT * FROM bl_config");
  4.     $config = array();
  5.     while ($result = $db->fetchfield($query)) {
  6.         $config = array_merge((array)$config,array(
  7.             $result['config_name']  =>  $result['config_value'],
  8.         ));
  9.         print_r($config);
  10.     }
  11. }

Imprime: Array ( [server_protocol] => http ) Array ( [server_protocol] => http [server_domain] => localhost ) Array ( [server_protocol] => http [server_domain] => localhost [server_path_to] => b ) Array ( [server_protocol] => http [server_domain] => localhost [server_path_to] => b [server_port] => 80 )

El valor de $config cada vez que recorre el bucle. Al tener el array_merge, cada vez que lo recorre tiene más valores.
El caso es que no comprendo que si ahí los tiene, justo debajo, tras salir del while, $config esté vacío.
El código de paketetrueke funciona mejor, es menos código y sin el array_merge, pero el problema es el mismo, al salir del while, $config está vacío.