从多维数组中的特定索引构建数组

时间:2016-01-17 02:52:05

标签: php mysql arrays multidimensional-array

如何过滤掉零索引,其中包含从MySQL查询返回的行的名称,然后将结果放回到如下所示的数组中。

所需的示例数组:

array:1 [
  0 => array:10 [
    0 => array:2 [
      0 => "2016-01-06"
      1 => 10
    ]
    1 => array:2 [
      0 => "2016-01-12"
      1 => 15
    ]
  ]
]

从MySQL查询返回的数组:

array:1 [
  0 => array:10 [
    0 => array:2 [
      0 => "price_1"
      1 => 10
    ]
    1 => array:2 [
      0 => "day_1"
      1 => "2016-01-06"
    ]
    2 => array:2 [
      0 => "price_2"
      1 => 15
    ]
    3 => array:2 [
      0 => "day_2"
      1 => "2016-01-12"
    ]
  ]
]

1 个答案:

答案 0 :(得分:1)

你可以做类似的事情(假设$array是带有MySQL结果的输入数组,而$output是我们的转换结果数组):

<?php

$output = array_map(function($value) {
    return [$value[1][1], $value[0][1]];
}, $array);

以下是使用您输入的示例:

php > var_dump($array);
array(1) {
  [0]=>
  array(4) {
    [0]=>
    array(2) {
      [0]=>
      string(7) "price_1"
      [1]=>
      int(10)
    }
    [1]=>
    array(2) {
      [0]=>
      string(5) "day_1"
      [1]=>
      string(10) "2016-01-06"
    }
    [2]=>
    array(2) {
      [0]=>
      string(7) "price_2"
      [1]=>
      int(15)
    }
    [3]=>
    array(2) {
      [0]=>
      string(5) "day_2"
      [1]=>
      string(10) "2016-01-12"
    }
  }
}
php > $output = array_map(function($value) { return [$value[1][1], $value[0][1]]; }, $array);
php > var_dump($output);                                                        array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(10) "2016-01-06"
    [1]=>
    int(10)
  }
}
php >