it-swarm.com.de

Wann sollten Sie wp_list_pluck () verwenden und wann nicht?

Während ich etwas über das verzögerte Laden von Metadaten lernte, traf ich diese Codezeilen :

// 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;
        }
    }
} 

Ich dachte, es bezieht sich auf dieses Thema , aber es gibt hier keine Referenzen und die einzige foreach-Schleife ist in eine Funktion eingeschlossen. Wie kann in diesem Fall eine Manipulation durch Referenzen erfolgen?

Wann sollten wir die Funktion wp_list_pluck() verwenden, um die bestmögliche Vorgehensweise zu erreichen?

9
MinhTri

In jeder foreach-Schleife bleibt der letzte Wert des Arrays, über den eine Schleife geführt wird, nach dem Ende der foreach-Schleife erhalten. Deshalb sollte man diesen Wert eigentlich immer wieder aufheben, nachdem die foreach-Schleife beendet ist.

wp_list_pluck() ist auch nur eine grundlegende foreach-Schleife, wenn $index_key nicht übergeben wird. Wie bei jeder foreach-Schleife bleibt auch der letzte Wert des Arrays nach dem Ende der foreach-Schleife erhalten, und ich denke, das ist, worauf sich diese Zeile im Codex bezieht.

Diese Annahme ist jedoch falsch. Funktionen sind in sich geschlossene Codeteile, und mit Ausnahme von Globalen sind diese Codeteile in einer Funktion nur für die Funktion selbst verfügbar. wp_list_pluck() globalisiert keinen seiner internen Werte ( variables ). Auch wenn der letzte Wert des Arrays nach der foreach-Schleife in der Funktion noch verfügbar ist und nicht zurückgesetzt wird, ist er für nicht verfügbar Code, der sich außerhalb der Funktion befindet, sodass Sie das in dieser Zeile im Codex beschriebene Problem der Weitergabe von Verweisen nicht haben können.

wp_list_pluck() ist genauso gültig wie jede einfache foreach-Schleife. Die Wahl liegt bei Ihnen. Ich persönlich bevorzuge wp_list_pluck(), da dadurch Code gespart wird, und Sie müssen nicht daran denken, Variablen zu deaktivieren, die später zum Debuggen von Alptraum führen können.

Nur eine letzte Anmerkung: wp_list_pluck() kann auch array_column ersetzen, da dies genauso funktioniert, wenn $index_key an die Funktion übergeben wird

3
Pieter Goosen