在PHP中,我需要动态构建一个数组,其中该数组的某些元素是无键的。
我尝试PHP array_push without numeric key时并不高兴。可能是我(到这里来晚了)。我只是一直弄错结构(这已经是漫长的一天)。
// This is built dynamically
$metaquery1 = [
'key' => 'field1',
'value' => 'value1',
];
// This is built dynamically
$metaquery2 = [
'key' => 'field2',
'value' => 'value2',
];
$query = [
'post_type' => 'post',
'meta_query' => [
'relation' => 'OR',
$metaquery1,
$metaquery2,
],
];
我期望:-
$query = [
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
[
'key' => 'field1',
'value' => 'value1',
],
[
'key' => 'field2',
'value' => 'value2',
],
];
但是我得到:-
$query = [
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
[0] => [
'key' => 'field1',
'value' => 'value1',
],
[1] => [
'key' => 'field2',
'value' => 'value2',
],
];
答案 0 :(得分:3)
PHP中的所有arrays实际上都是有序映射。没有键就没有价值。
答案 1 :(得分:1)
您不能拥有无键阵列。
您动态创建的数组:
$query = [
'post_type' => 'post',
'meta_query' => [
'relation' => 'OR',
$metaquery1,
$metaquery2,
],
];
本质上是这样的:
$query = [
'post_type' => 'post',
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'field1',
'value' => 'value1',
),
array(
'key' => 'field2',
'value' => 'value2',
),
),
];
这将转换为您在上一个示例中显示的内容。并且是处理元查询的正确格式。