0

どう表現したらいいのかわからない悩みを抱えています。動的配列を作成し、それを別の配列に含める必要があります。拡大させてください。これが私のコードです:

$myarrayarray = '';
$categoriesTerms = $catlist = rtrim($categoriesTerms,',');
$categoriestocheck = explode(',',$categoriesTerms);

foreach($categoriestocheck as $key=>$value){
    $myarrayarray .= "array(";
    $myarrayarray .= "'taxonomy' => 'map_location_categories',";
    $myarrayarray .= "'terms' => array(".$value."),";
    $myarrayarray .= "'field' => 'slug',";
    $myarrayarray .= "'operator' => 'AND'";
    $myarrayarray .= "),";
}           
$myarrayarray .= "array(";
$myarrayarray .= "'taxonomy' => 'map_location_categories',";
$myarrayarray .= "'terms' => array('event'),";
$myarrayarray .= "'field' => 'slug',";
$myarrayarray .= "'operator' => 'OR'";
$myarrayarray .= "),";
echo $myarrayarray;

$locationArgs = array(
    'post_type' => 'maplist',
    'orderby' => $orderby,
    'order' => $orderdir,
    'numberposts' => -1,
    'tax_query' => array($myarrayarray),
);

$mapLocations = get_posts($locationArgs);

これはエラーを生成しません。データの戻りを制限できません。$myarrayarray 変数を出力すると、ペイントと加圧シリンダーを組み合わせた検索で次のようになります。

array(
    'taxonomy' => 'map_location_categories',
    'terms' => array('paint'),
    'field' => 'slug',
    'operator' => 'AND'
),
array(
    'taxonomy' => 'map_location_categories',
    'terms' => array('pressurized-cylinders'),
    'field' => 'slug',
    'operator' => 'AND'
),
array(
    'taxonomy' => 'map_location_categories',
    'terms' => array('event'),
    'field' => 'slug',
    'operator' => 'OR'
),

コード内の変数の代わりにこれを配置すると、うまく機能します。したがって、変数は不正な形式ではなく、他の配列内で解決されていないだけです。たぶん私はばかで、これは不可能ですか?私は何を間違っていますか?!?!?! これは私を狂気に駆り立てており、解決策の検索をどのように表現するかさえ知りません。

4

2 に答える 2