Mi instinto me dice que hay un refactor mejor, quizás de una línea para el siguiente código:

if (isset($x))
{
    if (isset($y))
    {
        $z = array_merge($x,$y);
    }
    else
    {
        $z = $x;
    }
}
else
{
    $z = $y;
}

Si no me preocuparan los errores de advertencia, un simple array_merge($x,$y) funcionaría, pero me gustaría saber una mejor manera de hacerlo. ¿Pensamientos?

0
pbarney 4 dic. 2011 a las 06:48

1 respuesta

La mejor respuesta
$z = array_merge(
    isset($x) ? $x : array(),
    isset($y) ? $y : array()
);

Esto devolverá una matriz vacía si $x y $y no están configurados. Si solo se establece uno, devolverá esa matriz. Si ambos están configurados, devolverá el resultado de la ejecución de array_merge() en las matrices.

Ese no es exactamente el comportamiento de su código anterior, pero creo que es el comportamiento que pretendía. (Creo, en su código, que $z no será una matriz si no se configuran $x y $y).

Por cierto, este código asume que si se establecen $x y $y, son matrices. Si ese no es el caso, debe ejecutar is_array() en ellos para confirmar que son matrices o usar escriba malabares para asegurarse de que sean matrices cuando se ejecute array_merge().

6
Trott 4 dic. 2011 a las 09:09
Excelente respuesta, y devolver una matriz en blanco me ayuda a evitar verificar is_array () más adelante. ¡Gracias!
 – 
pbarney
4 dic. 2011 a las 07:40