如何将相同的键分组到数组

时间:2019-03-05 11:34:15

标签: php arrays

我有一个问题,如果我有这样的表,并且在field-2中具有相同的值,那么我想使Field-2成为我数组的键,所以如果Field-2是相同的值意味着它将与数组中的键相同:

这是表格:

    _____________________________
    | Field-1 | Field-2 | Field-3 |
    |_________|_________|_________|
    | row1    |    2    |    S    |
    |_________|_________|_________|
    | row2    |    2    |    A    |
    |_________|_________|_________|
    | row3    |    1    |    S    |
    |_________|_________|_________|
    | row4    |    3    |    S    |
    |_________|_________|_________|
    | row5    |    1    |    A    |
    |_________|_________|_________|
    | row6    |    4    |    A    |
    |_________|_________|_________|
    | row7    |    5    |    S    |
    |_________|_________|_________|
    | row8    |    5    |    A    |
    |_________|_________|_________|

我想要的结果:

  Array
    (
         [1] => Array
              (
                 [0] => row3
                 [1] => row5
              )
         [2] => Array
              (
                 [0] => row1
                 [1] => row2
              )
         [3] => Array
              (
                 [0] => row4
                 [1] => 
              )
         [4] => Array
              (
                 [0] => 
                 [1] => row6
              )
    [5] => Array
              (
                 [0] => row7
                 [1] => row8
              )

2 个答案:

答案 0 :(得分:0)

因为您没有提供任何代码以及答案,所以我将草拟一些代码,认为至少与您使用的代码相似-这将创建一个数组,循环遍历表的每一行并添加子数组的元素,其键为第二列中的任何内容。由于它每次都会添加一个新元素,因此不会覆盖前一个元素。

$array = [];
foreach ($table as $row) {
  $array[$row[1]][] = $row[0];
}
ksort($array); // Sorts the array so that the keys are in ascending order

答案 1 :(得分:0)

$output = array();
foreach($input as $array){
 $output[$array['Field-2']][] = $array['Field-1'];
}
ksort($output); // added as per additional requirement.