解析关联数组以根据另一个索引的值显示所有值

Parse associative array to display all values according to another index's value

我有一个 mySQL table 并且当我将行作为关联数组获取时, 我已经有了 table 和所有创建的东西。我只是不确定如何解析关联数组以便我可以在行中显示。

相当肯定可能有更简单的方法来解决这个问题。但是您可以使用 foreach 并检查当前数组值是否首先包含磁盘键,如果有,将其添加到以磁盘名称作为键的新数组中。

$parsed_disks = [];

foreach ($unparsed_disks as $value) {
    if (array_key_exists('s3_dir_name', $value)) {
        $parsed_disks[$value['s3_dir_name']][] = $value;
    } else {
        $parsed_disks['UnkownDisk'][] = $value;
    }
}

我不知道数组的变量名,所以我使用 $unparsed_disks 作为占位符。请注意,此方法不会以任何字母或数字顺序对新数组进行排序,因为插入是基于旧数组。

这将在 $parsed_disks 数组中生成以下结构。

array (
  'FileDrop1626801' => 
  array (
    0 => 
    array (
      'sender_id' => '123',
      'sender_email' => 'john.doe@gmail.com',
      'receiver_id' => '789',
      'receiver_email' => 'jane.doe@gmail.com',
      'file_name' => 'form.txt',
      's3_dir_name' => 'FileDrop1626801',
    ),
  ),
  'FileDrop1626809' => 
  array (
    0 => 
    array (
      'sender_id' => '123',
      'sender_email' => 'john.doe@gmail.com',
      'receiver_id' => '405',
      'receiver_email' => 'john.smith@gmail.com',
      'file_name' => 'form.txt',
      's3_dir_name' => 'FileDrop1626809',
    ),
    1 => 
    array (
      'sender_id' => '123',
      'sender_email' => 'john.doe@gmail.com',
      'receiver_id' => '789',
      'receiver_email' => 'jane.doe@gmail.com',
      'file_name' => 'form.txt',
      's3_dir_name' => 'FileDrop1626809',
    ),
  ),
)

然后您可以对其进行迭代,第一次迭代进入数组中的每个 disk,第二次迭代进入在 disk 中找到的每个文件事务。如下所示demo.