#php #html #html-table #associative-array
Вопрос:
У меня есть таблица MySQL, и когда я извлекаю строки в виде ассоциативного массива, у меня уже есть таблица и все, что создано. Я просто не знаю, как разобрать ассоциативный массив, чтобы я мог отобразить его в строке.
Ответ №1:
Совершенно уверен, что, вероятно, есть более простые способы сделать это. Но вы могли бы использовать a 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',
),
),
)
Который затем можно повторить, причем первая итерация выполняется на каждом диске в массиве, а вторая-на каждой файловой транзакции, найденной на этом диске. Как показано в следующей демонстрации.
Комментарии:
1. Спасибо, Ким! Вы упомянули, что, вероятно, есть более простой способ сделать это. Вы знаете какие-нибудь другие способы? Потому что я действительно хочу сделать это более эффективным. Наличие 3 циклов foreach может быть немного неэффективным.