Foros del Web » Programando para Internet » PHP »

echo me imprime "array"

Estas en el tema de echo me imprime "array" en el foro de PHP en Foros del Web. Buenas tardes soy nuevo en el foro pero ya lo he visitado anteriormente para consultas sobre diferentes temas, mi pregunta es la siguiente, tengo un ...
  #1 (permalink)  
Antiguo 04/08/2012, 12:23
 
Fecha de Ingreso: agosto-2012
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 0
Exclamación echo me imprime "array"

Buenas tardes soy nuevo en el foro pero ya lo he visitado anteriormente para consultas sobre diferentes temas, mi pregunta es la siguiente, tengo un codigo php con un array multidimensional siguiente:

<?php
$ver_tela = (isset($get_variables['tela'])) ? $get_variables['tela'] : "gabardina";
$ver_color_tela = (isset($get_variables['color_tela'])) ? $get_variables['color_tela'] : "44AB95";
$ver_nombre_tela = (isset($get_variables['nombre_tela'])) ? $get_variables['nombre_tela'] : "Verde";

$telas = array(
'gabardina' => array(
'nombre_telas' => array('Morado', 'Azul', 'Verde'),
'titulo'=>'GABARDINA',
'colores' => array( 'E01B6A', '1B22E0', '44AB95')
)
);

if( ! array_key_exists($ver_tela, $telas)){
$ver_tela = "gabardina";
}

$nombres_tela = $telas[$ver_tela]['nombre_telas'];
if( ! array_key_exists($ver_nombre_tela, $telas)){
$ver_nombre_tela = $nombres_tela[0];
}

$colores_disponibles_tela = $telas[$ver_tela]['colores'];
if( ! in_array($ver_color_tela,$colores_disponibles_tela )){
$ver_color_tela = $colores_disponibles_tela[0];
}
?>

y lo que quiero es imprimir el nombre de la tela correspondiente que se este visualizando el codigo que tengo para ello es este

<div class="desc_tela">
<p><?php echo $nombres_tela?></p>
</div>

lo que pasa es que me imprime "array" y no logro encontrar el error, saludos y de antemano, gracias
  #2 (permalink)  
Antiguo 04/08/2012, 13:42
 
Fecha de Ingreso: agosto-2012
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 5
Respuesta: echo me imprime "array"

te imprime array, porque $nombres_tela es un array.

Código PHP:
Ver original
  1. <?php echo $nombres_tela ?>

Prueba imprimiendo:


Código PHP:
Ver original
  1. <?php echo $nombres_tela[0] ?>

o algun otro valor
  #3 (permalink)  
Antiguo 04/08/2012, 13:43
 
Fecha de Ingreso: agosto-2012
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 5
Respuesta: echo me imprime "array"

o en su defecto, tal vez ocupas imprimir la variable:

Código PHP:
Ver original
  1. <?php echo $ver_nombre_tela ?>

en vez de:
Código PHP:
Ver original
  1. <?php echo $nombres_tela ?>

En resumen, es error de sintaxis la tuya :)
  #4 (permalink)  
Antiguo 04/08/2012, 14:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: echo me imprime "array"

Pues claro, evidentemente el valor de $nombres_tela es un array.

Si necesitas mostrar su contenido podría usar join() para pegar los valores mediante algún carácter y así poder imprimir la cadena.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/08/2012, 14:07
 
Fecha de Ingreso: agosto-2012
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: echo me imprime "array"

Hola, gracias por la respuesta en efecto ya habia probado con lo que mencionas pero quiero que cuando le den sobre :


Código PHP:
Ver original
  1. <?php
  2.     echo "<ul>";
  3.     foreach($colores_disponibles_tela as $color_tela){
  4.     echo '<li class="lista_productos" style="background-  color:#'.$color_tela.'"><a href="telas.php?tela='.$ver_tela.'&color_tela='.$color_tela.'&nombre_tela='.$ver_nombre_tela.'" class="loadable" style="display:block">&nbsp;</a> </li>';
  5. }
  6.        echo "</ul>";
  7.        echo "</br></br>";
  8. ?>
los links generados que son cuadritos de color salga el nombre del color que esta integrado en el array "nombre telas" creo ver de donde viene el problema

Código PHP:
Ver original
  1. $nombres_tela = $telas[$ver_tela]['nombre_telas'];
  2.     if( ! array_key_exists($ver_nombre_tela, $telas)){
  3.         $ver_nombre_tela = $nombres_tela[0];
  4.     }

al no existir el valor lo que hace es que siempre me devuelve morado pero no habia contemplado o puesto atencion a eso, pero sigo sin saber donde esta el error ya que pues cada que cambia de link por asi decirlo debe devolver diferente nombre.

Última edición por GatorV; 04/08/2012 a las 14:52
  #6 (permalink)  
Antiguo 04/08/2012, 15:37
 
Fecha de Ingreso: agosto-2012
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 5
De acuerdo Respuesta: echo me imprime "array"

Mi solución: http://daw.com.mx/fdw/hlp3-colores/index.php

y aquí el código, ojalá te sirva :)


Código PHP:
Ver original
  1. <?php
  2. $ver_tela = (isset($_GET['tela'])) ? $_GET['tela'] : "gabardina";
  3. $ver_color_tela = (isset($_GET['color_tela'])) ? $_GET['color_tela'] : "44AB95";
  4. $ver_nombre_tela = (isset($_GET['nombre_tela'])) ? $_GET['nombre_tela'] : "Verde";
  5.  
  6. $telas = array(
  7.     'gabardina' => array('nombre_telas' => array('Morado', 'Azul', 'Verde'),
  8.     'titulo'=>'GABARDINA','colores' => array( 'E01B6A', '1B22E0', '44AB95'))
  9. );
  10.  
  11. if( !in_array($ver_tela, $telas))
  12. {   $ver_tela = "gabardina";
  13. }
  14.  
  15. $nombres_tela = $telas[$ver_tela]['nombre_telas'];
  16.  
  17. if(!in_array($ver_nombre_tela, $nombres_tela))
  18. {   $ver_nombre_tela = $nombres_tela[0];
  19. }
  20.  
  21. $colores_disponibles_tela = $telas[$ver_tela]['colores'];
  22. if(!in_array($ver_color_tela,$colores_disponibles_tela))
  23. {   $ver_color_tela = $colores_disponibles_tela[0];
  24. }
  25.  
  26.     echo "<ul>";
  27.     foreach($colores_disponibles_tela as $color_tela){
  28.     $color_actual = array_keys($colores_disponibles_tela,$color_tela);
  29.  
  30.  
  31.     echo '<li class="lista_productos" style="background-  color:#'.$color_tela.'"><a href="index.php?tela='.$ver_tela.'&color_tela='.$color_tela.'&nombre_tela='.$nombres_tela[$color_actual[0]].'" class="loadable" style="display:block">&nbsp; Color '.$nombres_tela[$color_actual[0]].'</a> </li>';
  32. }
  33.        echo "</ul>";
  34. ?>
  #7 (permalink)  
Antiguo 04/08/2012, 16:06
 
Fecha de Ingreso: agosto-2012
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: echo me imprime "array"

Hola wlinker me funciono hasta una parte el codigo

Código PHP:
Ver original
  1. <div class="desc_tela">
  2. <p><?php echo $nombres_tela?></p>
  3. </div>

esta parte del codigo se encuentra arriba de la lista

Código PHP:
Ver original
  1. <div class="datos_tela">
  2.         <div class="desc_tela">
  3.             <p><?php echo $nombres_tela[$color_actual[0]]?></p>
  4.             </br></br>
  5.         </div>
  6.         <div class="color_tela">
  7.         <?php
  8.             echo "<ul>";
  9.             foreach($colores_disponibles_tela as $color_tela){
  10.             $color_actual = array_keys($colores_disponibles_tela,$color_tela);
  11.             echo '<li class="lista_productos" style="background-color:#'.$color_tela.'"><a href="telas.php?tela='.$ver_tela.'&color_tela='.$color_tela.'&nombre_tela='.$nombres_tela[$color_actual[0]].'" class="loadable" style="display:block">&nbsp;</a> </li>';
  12.             }
  13.             echo "</ul>";
  14.             echo "</br></br>";
  15.         ?>
  16.         </div>
  17.     </div>

si lo coloco de esa forma la descripcion no me saca el nombre del color,
y si lo pongo debajo me saca el default

Código PHP:
Ver original
  1. <div class="datos_tela">
  2.         <div class="color_tela">
  3.         <?php
  4.             echo "<ul>";
  5.             foreach($colores_disponibles_tela as $color_tela){
  6.             $color_actual = array_keys($colores_disponibles_tela,$color_tela);
  7.             echo '<li class="lista_productos" style="background-color:#'.$color_tela.'"><a href="telas.php?tela='.$ver_tela.'&color_tela='.$color_tela.'&nombre_tela='.$nombres_tela[$color_actual[0]].'" class="loadable" style="display:block">&nbsp;</a> </li>';
  8.             }
  9.             echo "</ul>";
  10.             echo "</br></br>";
  11.         ?>
  12.         <div class="desc_tela">
  13.             <p><?php
  14.             echo $nombres_tela[$color_actual[0]]?></p>
  15.             </br></br>
  16.         </div>
  17.         </div>
  18.     </div>

el codigo que me pusiste si sirve para que los li de colores tengan su color determinado supongo que tiene algo que ver con el foreach ya trate de ponerlo dentro del forech pero no funciono, saludos

lo que quiero es que me salga una leyenda del nombre del color en

Código PHP:
Ver original
  1. <div class="desc_tela">
  2.             <p><?php
  3.             echo $nombres_tela[$color_actual[0]]?></p>
  4.             </br></br>
  5.         </div>

dependiendo del color que elija de antemano gracias, tu codigo si sirve para poner nombre a cada color pero sigo sin sacarlo donde lo quiero.
  #8 (permalink)  
Antiguo 04/08/2012, 21:26
 
Fecha de Ingreso: agosto-2012
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 5
De acuerdo Respuesta: echo me imprime "array"

mira, si te está funcionando hasta "una parte" como tu dices, no te quieres la cabeza, guarda en una nueva variable el valor del color...

algo asi, en esta parte...:

Código PHP:
Ver original
  1. echo "<ul>";
  2.             foreach($colores_disponibles_tela as $color_tela){
  3.             $color_actual = array_keys($colores_disponibles_tela,$color_tela);
  4.             echo '<li class="lista_productos" style="background-color:#'.$color_tela.'"><a href="telas.php?tela='.$ver_tela.'&color_tela='.$color_tela.'&nombre_tela='.$nombres_tela[$color_actual[0]].'" class="loadable" style="display:block">&nbsp;</a> </li>';
  5.             }
  6.             echo "</ul>";
  7.             echo "</br></br>";


vas a agregar la siguiente linea:

Código PHP:
Ver original
  1. $nombre_temporal_color = $nombres_tela[$color_actual[0]];

de tal manera que te quede el primer fragmento:

Código PHP:
Ver original
  1. echo "<ul>";
  2.             foreach($colores_disponibles_tela as $color_tela){
  3.             $color_actual = array_keys($colores_disponibles_tela,$color_tela);
  4.             $nombre_temporal_color = $nombres_tela[$color_actual[0]];
  5.             echo '<li class="lista_productos" style="background-color:#'.$color_tela.'"><a href="telas.php?tela='.$ver_tela.'&color_tela='.$color_tela.'&nombre_tela='.$nombres_tela[$color_actual[0]].'" class="loadable" style="display:block">&nbsp;</a> </li>';
  6.             }
  7.             echo "</ul>";
  8.             echo "</br></br>";

con loque tendrías el color actual en la variable:

Código PHP:
Ver original
  1. $nombre_temporal_color

y ahora si podrías usarla en cualquier otra parte :)

el problema que encuentro, segun veo... es el ámbito de la variable, la querías usar en un lugar donde ya no era posible por el uso de los parametros.

cuentame como te va.

saludos.
  #9 (permalink)  
Antiguo 04/08/2012, 21:55
(Desactivado)
 
Fecha de Ingreso: julio-2006
Mensajes: 273
Antigüedad: 17 años, 8 meses
Puntos: 5
Respuesta: echo me imprime "array"

Puedes utilizar

print_r($array);
  #10 (permalink)  
Antiguo 05/08/2012, 06:09
 
Fecha de Ingreso: agosto-2012
Mensajes: 18
Antigüedad: 11 años, 8 meses
Puntos: 0
De acuerdo Respuesta: echo me imprime "array"

Hola gracias por sus respuestas ya logre resolver el problema, a continuacion pongo como quedo por si a alguien le sirve :

las variables cargadas:

Código PHP:
Ver original
  1. $ver_tela = (isset($get_variables['tela'])) ? $get_variables['tela'] : "gabardina";
  2.     $ver_color_tela = (isset($get_variables['color_tela'])) ? $get_variables['color_tela'] : "44AB95";

este es el array en cuestion lo modifique un poco dandole clave a cada color para extraerlo mas facil por que si era medio complicado sacarlo de otro elemento del array :

Código PHP:
Ver original
  1. $telas = array(
  2.         'gabardina' => array(
  3.             'titulo'=>'GABARDINA',
  4.             'colores' => array( 'Morado' => 'E01B6A', 'Azul' => '1B22E0', 'Verde' => '44AB95')
  5.         )
  6.     );

las demas funciones para determinar si el elemento existe

Código PHP:
Ver original
  1. if( ! in_array($ver_tela, $telas)){
  2.         $ver_tela = "gabardina";
  3.     }

los colores del array con ayuda de WLINKER

Código PHP:
Ver original
  1. $colores_disponibles_tela = $telas[$ver_tela]['colores'];
  2.     if( ! in_array($ver_color_tela,$colores_disponibles_tela)){
  3.         $ver_color_tela = $colores_disponibles_tela[0];
  4.     }

y este es una de las partes del codigo que resolvio el problema en cuestion

Código PHP:
Ver original
  1. foreach($telas[$ver_tela]['colores'] as $clave => $valor){
  2.         if($ver_color_tela == $valor)
  3.         $nombre_tela = $clave;
  4.     }


y asi quedo los links generados

Código PHP:
Ver original
  1. <div class="desc_tela">
  2.             <p><?php
  3.             echo $nombre_tela?></p>
  4.             </br></br>
  5.         </div>
  6.         <div class="color_tela">
  7.         <?php
  8.             echo "<ul>";
  9.             foreach($colores_disponibles_tela as $color_tela){
  10.                 $color_actual = array_keys($colores_disponibles_tela,$color_tela);
  11.                 echo '<li class="lista_productos" style="background-color:#'.$color_tela.'"><a href="telas.php?tela='.$ver_tela.'&color_tela='.$color_tela.'" class="loadable" style="display:block">&nbsp;</a> </li>';
  12.             }
  13.             echo "</ul>";
  14.             echo "</br></br>";
  15.         ?>
  16.         </div>
  17.     </div>

Gracias por su ayuda :D buen foro :)

Última edición por Cloudz; 05/08/2012 a las 06:15

Etiquetas: echo, imprime, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:59.