¿Cuándo debería y cuándo no debería usar wp_list_pluck ()?

9

Mientras aprendía sobre la carga lenta de metadatos, conocí estos líneas de código :

// Don't use 'wp_list_pluck()' to avoid by-reference manipulation.
$comment_ids = array();
if ( is_array( $comments ) ) {
    foreach ( $comments as $comment ) {
        if ( $comment instanceof WP_Comment ) {
            $comment_ids[] = $comment->comment_ID;
        }
    }
} 

Pensé que se relaciona con este tema pero no hay referencias Aquí y el único bucle foreach está envuelto dentro de una función, ¿cómo puede ocurrir la manipulación por referencia en este caso?

Y, para la mejor práctica, ¿cuándo deberíamos usar la función wp_list_pluck() ?

    
pregunta MinhTri 06.06.2016 - 13:18

1 respuesta

3

En cualquier bucle foreach , el último valor de la matriz en bucle permanece después del final del bucle foreach . Es por eso que uno siempre debe desactivar ese valor después de que se complete el bucle foreach .

wp_list_pluck() también es solo un ciclo básico de foreach si no se pasa $index_key . Además, al igual que con cualquier bucle foreach , el último valor de la matriz permanece después del final del bucle foreach , y creo que esto es a lo que se refiere esa línea en el códice.

Sin embargo, esa suposición es incorrecta. Las funciones son piezas de código independientes, y excepto para los globales, estas piezas de código dentro de una función son solo Disponible para la propia función. wp_list_pluck() no globaliza ninguno de sus valores internos ( variables ), por lo que incluso si el último valor de la matriz todavía está disponible después del bucle foreach dentro de la función, y no se anula la configuración, no está disponible para ningún fragmento de código fuera de la función, por lo que no puede tener el problema de paso por referencia como se describe en esa línea en el códice.

wp_list_pluck() es tan válido para usar como cualquier bucle simple foreach . La elección depende de usted. Personalmente, prefiero wp_list_pluck() , ya que guarda en el código, y no es necesario que recuerde desactivar las variables, lo que más tarde puede llevar a la depuración de la pesadilla.

Solo una nota final, wp_list_pluck() también puede reemplazar array_column , ya que funciona de la misma manera si se pasa $index_key a la función

    
respondido por el Pieter Goosen 06.06.2016 - 13:43

Lea otras preguntas en las etiquetas