【发布时间】:2021-05-26 13:15:59
【问题描述】:
希望这是一个简单的问题。当循环未命名时,我找不到关于如何在数组中定位数组的答案。例如,我最终需要得到这样的结果:
$args = array(
'role' => 'artist',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'relation' => 'OR',
// $medium_array,
array(
'key' => 'artist_medium',
'value' => 'Wood',
'compare' => 'LIKE',
),
array(
'key' => 'artist_medium',
'value' => 'Painting',
'compare' => 'LIKE',
)
),
array(
'key' => 'studio_region_location',
'value' => 'London',
'compare' => 'LIKE',
)
)
);
我一直在做的是成功循环到 $meta_query[],但我不知道如何进入“meta_query”中的第二个数组。我尝试了以下但没有运气:
$_POST['mediumType'] = array('Wood', 'Painting');
$_POST['locationType'] = array('London');
$meta_query = array(
'relation' => 'AND',
array('relation' => 'OR')
);
foreach ($_POST['mediumType'] as $val){
$meta_query[][] = array(
'key' => 'artist_medium',
'value'=> $val,
'compare' =>'LIKE'
);
}
foreach ($_POST['locationType'] as $loc){
$meta_query[] = array(
'key' => 'studio_region_location',
'value'=> $loc,
'compare' =>'LIKE'
);
}
所以希望有人可以提供帮助。我知道我在这里遗漏了一些明显的东西,但是通过谷歌搜索,我只能找到如何定位该子数组(如果它被命名)。这是 print_r 报告的上述代码提供的内容:
Array ( [role] => artist [orderby] => meta_value [order] => ASC [meta_query] => Array ( [relation] => AND [0] => Array ( [relation] => OR ) [1] => Array ( [0] => Array ( [key] => artist_medium [value] => Fabric - decorative [compare] => LIKE ) ) [2] => Array ( [0] => Array ( [key] => artist_medium [value] => Metal [compare] => LIKE ) ) [3] => Array ( [key] => studio_region_location [value] => Dublin / Marlborough / Jaffrey [compare] => LIKE ) ) )
谢谢!
【问题讨论】:
-
我很确定,一旦进入嵌套数组,只要你不调用数组键
relation、key或value,你可以将它命名为任何意思您可以稍后定位它。尝试使用$meta_query = array('relation' => 'AND', 'FAKE_KEY' => array('relation' => 'OR')); -
好吧,
print_r已经向您展示了这些键是什么——它们是数字。那么您是否尝试过使用它们? -
我尝试了数字和假键,但它似乎没有在 uh 数组中添加任何其他数组,除了一个;我敢肯定是因为我错过了一些东西。这是我使用的: ach ($_POST['mediumType'] as $val){ $meta_query[1] = array( 'key' => 'artist_medium', 'value'=> $val, 'compare' => '喜欢');
-
我觉得这个问题不清楚。为什么我们不能有minimal reproducible example?
$_POST中有什么内容?根据您的样本$_POST数据,您想要的确切结果是什么? -
抱歉,刚刚更新了一些测试数据。并在顶部获得确切的期望结果。