1

Quiero imprimir un array, pero con return no me deja , si uso echo si funciona:

<?php
function imprimirArrays($a){

$sizeA=sizeof($a);
$respuesta=array();

for ($i=0; $i <$sizeA; $i++) { 

  $respuesta[]=$a[$i] ;
}

return $respuesta;

}

El HTML

<?php
include_once"arrays1.php";
?>
<!doctype hmtl>
<html>
<body>
    <?php
    
 $a=array(3,5,4,890);
 $respuesta=imprimirArrays($a);
 echo $respuesta;/*linea 11 donde esta el error*/
    ?>
</body>
</html>

Al usar el return me sale el siguiente error:

Notice: Array to string conversion in C:\xampp\htdocs\practica\imprimiendo-arrays.php on line 11 Array

2 respuestas 2

2

Aclaremos unos puntos:

  • El error que muestras no es por el uso de return, es por qué tratas de imprimir una estructura de datos compleja con echo que solo te va a servir para imprimir valores primitivos como:
    • String
    • Number
    • Booleans
  • El uso de return es para que la función devuelva algún resultado procesado
  • Si requieres imprimir una estructura de datos como un array entonces debes hacer alguna de estas opciones:
    • Has uso de print_r o var_dump
    • Itera con un ciclo foreach a tu array y ahora sí por dentro de este podrías imprimir cada elemento del array con echo

Para el caso de ocupar echo hacemos lo siguiente:

foreach($respuesta as $numero)
{
    echo $numero."<br />;
}

Iteramos cada posición del array y el valor recuperado por cada vuelta lo almacenamos en la variable $numero la cual ahora sí por dentro del ciclo podemos imprimir con echo

Edición

Si por otro lado tienes una matriz de datos, N cantidad de arrays dentro de otro array principal, hacer lo anterior nos daría la misma notificación que ya obtienes (atendiendo a quien me hizo la observación).

Entonces lo que procede es generar otro ciclo foreach dentro del principal para que podamos iterar los elementos de los arrays internos.

Ejemplo

$datosNivelUno = array(
                    array(1, 2, 4, 5),
                    array(6, 7, 9, 10)
                );

foreach($datosNivelUno as $nivelPrincipal)
{
    foreach($nivelPrincipal as $numeros)
    {
        echo $numeros.PHP_EOL;
    }
}

Resultado:

1
2
4
5
6
7
9
10
1
  • Solo por aclararlo, (porque en tu respuesta asumes que cada elemento en el ciclo se puede imprimir con echo, y sin embargo, si fueran arrays u objetos estaríamos en el mismo problema) que habría que iterar por cada elemento si este no fuera imprimible con echo.
    – Jakala
    Commented el 4 may. 2020 a las 4:13
1

para imprimir un array debes usar la funcion var_dump($array) o print_r($array), en tu funcion imprimirArrays en vez de la asignacion $respuesta[]=$a[$i] ; debes de hacer un echo $a[$i] y retornar un boolean en todo caso. [https://www.php.net/manual/es/language.types.array.php]. saludos

¿No es la respuesta que buscas? Examina otras preguntas con la etiqueta o formula tu propia pregunta.