Variable im Array funktioniert nicht

Ich habe ein Problem, dass eine Variable für eines meiner Argumente in einer Abfrage funktioniert. Ich verwende einen benutzerdefinierten Beitragstyp und Kategorienamen als Begriffe, um zu bestimmen, welche Kategorien angezeigt werden.

Wenn ich die Werte fest in die Begriffe einstelle, funktioniert es gut, aber wenn ich eine Variable verwende, scheint es nicht zu funktionieren.

Dieser Code funktioniert:

$args = array( 'post_type' => 'sparknz', 'tax_query' => array( array( 'taxonomy' => 'sparknz_gardens', 'field' => 'name', 'terms' => array ( 'The A Team', 'The B Team', 'The C Team' ), ) ) ); 

Aber das ist nicht (in Bezug auf Variable variabel):

 $my_term_names = "'The A Team','The B Team','The C Team'"; $args = array( 'post_type' => 'sparknz', 'tax_query' => array( array( 'taxonomy' => 'sparknz_gardens', 'field' => 'name', 'terms' => array( $my_term_names ), ) ) ); 

Ich brauche die Begriffe, um eine Variable zu sein. Irgendwelche Ideen?

Nur ein Update, warum ich eine Zeichenfolge als Variable verwende. Ich verwende ‘array_intersect’, um Ähnlichkeiten in zwei Arrays zu erkennen:

 $my_user_array = array( "c" => $user_array ); $my_cat_array = array( "d" => $category_array ); $myresult = array_intersect( $my_user_array, $my_cat_array ); $my_term_names = implode( ",", $myresult ); echo $$my_term_names; 

Nicht sicher, ob es einen anderen Weg gibt, dies zu tun?

Solutions Collecting From Web of "Variable im Array funktioniert nicht"

PHP interpretiert diese Arrays unterschiedlich. Im ersten Beispiel bitten Sie WP_Query, Posts zu erhalten
durch 3 Term Slugs und im zweiten Beispiel geben Sie dem Array einen Wert von 1 String. Wenn wir die beiden Arrays drucken würden, würde es so aussehen:

Ihr Beispiel 1:

 'terms' => array( [0] => 'The A Team', [1] => 'The B Team', [2] => 'The C Team' ) 

Ihr Beispiel 2:

 'terms' => array( [0] => '\'The A Team','The B Team','The C Team\'' ) 

PHP denkt, dass Sie ihm eine einzelne Zeichenfolge zuweisen, auch wenn es in der Zeichenfolge selbst Kommas gibt, ist es eine absolute Zeichenfolge. Was Sie tun müssen, ist die Variable selbst zu einem Array zu machen.

 $my_term_names = array( 'The A Team', 'The B Team', 'The C Team' ) 'terms' => $my_term_names 

Der folgende Code wird als eine fortlaufende Zeichenfolge dargestellt:

$my_term_names = "'The A Team','The B Team','The C Team'";

Sie möchten, dass diese Begriffe ein Array sind:

$my_term_names = array( 'The A Team', 'The B Team', 'The C Team' );

Jetzt müssen Sie das array() aus Ihrer Terms-Abfrage entfernen.

 $args = array( 'post_type' => 'sparknz', 'tax_query' => array( array( 'taxonomy' => 'sparknz_gardens', // taxonomy name 'field' => 'name', // term_id, slug or name 'terms' => $my_term_names, // Terms array (defined above) ) ) ); 

Bearbeiten. 19.10.2016

Ich array_intersect(); , dass Sie die Ähnlichkeiten zwischen mehreren Arrays mit array_intersect(); finden möchten array_intersect(); Sie müssen jedoch aufhören, alles wieder in das String-Format zu bringen, sobald Sie Ihre Ähnlichkeiten gefunden haben. array_intersect(); nimmt mehrere Arrays, findet die Ähnlichkeiten und gibt ein neues Array zurück, das ähnliche Werte zwischen den angegebenen mehreren Arrays enthält.

Beispiel # 1 array_intersect() Beispiel

 $array1 = array( "a" => "green", "red", "blue" ); $array2 = array( "b" => "green", "yellow", "red" ); $result = array_intersect( $array1, $array2 ); print_r( $result ); 

Das obige Beispiel wird ausgeben:

 Array ( [a] => green [0] => red ) 

Wenn Sie mehrere Begriffe aus Ihrer tax_query , muss das terms Argument der tax_query im Array-Format sein . Kein String-Format.

Hier ist ein aktualisiertes Beispiel für Ihre Situation. Ich habe einfache Variablennamen verwendet, um den Punkt zu verdeutlichen:

 $terms_array_1 = array( 'The B Team', 'The D Team', 'The A Team' ); $terms_array_2 = array( 'The A Team', 'The B Team', 'The C Team' ); $similar_terms = array_intersect( $terms_array_1, $terms_array_2 ); print_r( $similar_terms ); $args = array( 'post_type' => 'sparknz', 'tax_query' => array( array( 'taxonomy' => 'sparknz_gardens', // taxonomy name 'field' => 'name', // term_id, slug or name 'terms' => $similar_terms, // Term Names array (similarities between array1 and array2) ) ) );