PHP - 按子数组值对数组进行分组(索引数组)

PHP - Group Array by its Sub Array Value (Indexed Array)

提问人:Syed Ibrahim 提问时间:2/15/2020 更新时间:2/17/2020 访问量:130

问:

我需要按子数组值对数组进行分组。

刚刚通过这个链接。

按子数组值对数组进行分组

但是这里的子数组值有键。就我而言,我们没有钥匙。仅索引键。下面是我的数组

Array
(
    [0] => Array
        (
            [0] => 14. Remarketing Bengaluru
            [1] => RM Web
            [2] => Ludhiana
            **[3] => Display Only**
            [4] => INR
            [5] => 6
        )

    [1] => Array
        (
            [0] => 12. Other Search ROTN
            [1] => 01. Eye glass Shapes
            [2] => Tiruchirappalli
            **[3] => Search Only**
            [4] => INR
            [5] => 144
        )

    [2] => Array
        (
            [0] => 10. Brand ROTN
            [1] => 03. Brand + Keywords
            [2] => Erode
            **[3] => Search Only**
            [4] => INR
            [5] => 24
        )

    [3] => Array
        (
            [0] => 11. Competitors ROTN
            [1] => 02. Titan Eye Plus
            [2] => Thoothukudi
            **[3] => Search Only**
            [4] => INR
            [5] => 1
        )

    [4] => Array
        (
            [0] => 14. Remarketing Bengaluru
            [1] => RM Web
            [2] => Chandigarh
            **[3] => Display Only**
            [4] => INR
            [5] => 6
        )
)

预期:

需要对带有星标值的数组进行分组。例如。需要使用数组索引键 3 对数组进行分组。

分组数组应类似于“仅显示”、“仅搜索

PHP 排序 多维数组

评论

1赞 GetSet 2/15/2020
你能发布你的源代码吗
0赞 Syed Ibrahim 2/15/2020
源代码不多。只是从 csv 文件中获取数组。$csvFile = file('新报告.csv');$csvRecords = [];foreach ($csvFile as $key => $line) { if($key > 2) { $csvRecords[] = str_getcsv($line, “\t”); } } $csvRecords - 这是我在问题中添加的数组。谢谢。
2赞 GetSet 2/15/2020
您是否尝试过使用您链接到的 SO 帖子中的解决方案之一?当数组这样时,数组的数字索引关键。
0赞 Syed Ibrahim 2/15/2020
是的,我试过了,但它对我的情况不起作用。
0赞 jspit 2/16/2020
它的工作方式与注释中描述的 GetSet 完全相同。你最好将你的数组作为PHP源代码发布。您可以使用 var_export () 函数执行此操作。

答:

2赞 jspit 2/17/2020 #1

这是按子数组值对数组进行分组的解决方案。我只是用 3 替换了“id”。

$old_arr = array( 
  array( "14. Remarketing", "RM", "Lu", "Display Only", "INR", "6" ), 
  array( "12. Other", "Shapes", "Ti", "Search Only", "INR", "144" ), 
  array( "10. Brand", "Brand", "E", "Search Only", "INR", "24" ), 
  array( "11. Competitors", "Titan", "Th", "Search Only", "INR", "1"), 
);

foreach ($old_arr as $key => $item) {
   $arr[$item[3]][$key] = $item;
}

echo '<pre>';
var_export($arr);

结果:

array (
  'Display Only' => 
  array (
    0 => 
    array (
      0 => '14. Remarketing',
      1 => 'RM',
      2 => 'Lu',
      3 => 'Display Only',
      4 => 'INR',
      5 => '6',
    ),
  ),
  'Search Only' => 
  array (
    1 => 
    array (
      0 => '12. Other',
      1 => 'Shapes',
      2 => 'Ti',
      3 => 'Search Only',
      4 => 'INR',
      5 => '144',
    ),
    2 => 
    array (
      0 => '10. Brand',
      1 => 'Brand',
      2 => 'E',
      3 => 'Search Only',
      4 => 'INR',
      5 => '24',
    ),
    3 => 
    array (
      0 => '11. Competitors',
      1 => 'Titan',
      2 => 'Th',
      3 => 'Search Only',
      4 => 'INR',
      5 => '1',
    ),
  ),
)