¿Cómo acceder a los elementos en una matriz devuelta por una función?

2 minutos de lectura

avatar de usuario
Ajay

Necesito devolver múltiples valores de una función, por lo tanto, los agregué a una matriz y devolví la matriz.

<?

function data(){

$a = "abc";
$b = "def";
$c = "ghi";

return array($a, $b, $c);
}


?>

¿Cómo puedo recibir los valores de $a, $b, $c llamando a la función anterior?

  • Puede acceder a los valores como accede a cualquier matriz. sugiero leer php.net/manual/en/language.types.array.php .

    – Félix Kling

    17 de abril de 2011 a las 9:01

  • Efectivamente, un duplicado de stackoverflow.com/q/5301065/2943403

    – mickmackusa

    27 de noviembre de 2020 a las 22:16

Puede agregar claves de matriz a sus valores de retorno y luego usar estas claves para imprimir los valores de matriz, como se muestra aquí:

function data() {
    $out['a'] = "abc";
    $out['b'] = "def";
    $out['c'] = "ghi";
    return $out;
}

$data = data();
echo $data['a'];
echo $data['b'];
echo $data['c'];

Puedes hacerlo:

list($a, $b, $c) = data();

print "$a $b $c"; // "abc def ghi"

  • @GiacomoTecyaPigani list no es una función, es una construcción de lenguaje como se indica en el documentos.

    – Taylor

    11 de noviembre de 2014 a las 8:31


  • Para alguien acostumbrado al desempaquetado de tuplas de Python o a los enlaces estructurados de C++17, esta se siente como la forma más natural de devolver múltiples valores.

    – s3cur3

    27 oct 2019 a las 18:58

  • Desde PHP 7.1, puedes usar [$a, $b, $c] = datos();

    – leninzprahy

    20 de abril de 2021 a las 13:12

function give_array(){

    $a = "abc";
    $b = "def";
    $c = "ghi";

    return compact('a','b','c');
}


$my_array = give_array();

http://php.net/manual/en/function.compact.php

La función de datos devuelve una matriz, por lo que puede acceder al resultado de la función de la misma manera que normalmente accedería a los elementos de una matriz:

<?php
...
$result = data();

$a = $result[0];
$b = $result[1];
$c = $result[2];

O podrías usar el list() función, como recomienda @fredrik, para hacer lo mismo en una línea.

$array  = data();

print_r($array);

avatar de usuario
ObiHill

Desde PHP 5.4 puede aprovechar la desreferenciación de matrices y hacer algo como esto:

<?

function data()
{
    $retr_arr["a"] = "abc";
    $retr_arr["b"] = "def";
    $retr_arr["c"] = "ghi";

    return $retr_arr;
}

$a = data()["a"];    //$a = "abc"
$b = data()["b"];    //$b = "def"
$c = data()["c"];    //$c = "ghi"
?>

avatar de usuario
mohd jagir

<?php
function demo($val,$val1){
    return $arr=array("value"=>$val,"value1"=>$val1);

}
$arr_rec=demo(25,30);
echo $arr_rec["value"];
echo $arr_rec["value1"];
?>

  • Esta respuesta de solo código está declarando sin sentido $arr.

    – mickmackusa

    24 de junio a las 1:09

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad