我如何构造这样的无键数组?

时间:2019-04-25 15:05:08

标签: php arrays

在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',
    ],
];

2 个答案:

答案 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',
    ),
  ),
];

这将转换为您在上一个示例中显示的内容。并且是处理元查询的正确格式。