PHP数组,动态数组名称或其他技术

时间:2016-11-29 17:24:23

标签: php arrays dynamic

我继承了一个项目,我需要以下列格式向表中添加数据。

>

我在一个数组中获得的内容如下:

import pandas as pd

df = pd.read_fwf('old_csv_file')
df.Name = df.Name.str.title()
df.to_csv('new_csv_file', index=False, sep='\t')

我需要为每个健身级别分组,并添加以下3个记录/行:

Fitness101,FT101,EA101,RX101

实现这一目标的最佳方法是什么?

我尝试了几个if / while / foreach语句/循环,但没有运气。

是否可以使用动态数组名称,或者我是否将此更复杂?

感谢。

如果我打印数组,它看起来像这样:

Fitness101,FT101
Fitness101,EA101
Fitness101,RX101
Fitness102,FT102
Fitness102,EA102
Fitness102,RX102
Fitness103,FT103
Fitness103,EA103
Fitness103,RX103

2 个答案:

答案 0 :(得分:0)

与此类分组问题一样,您可以将要分组的列用作结果数组中的键。如果您使用以下格式的数组开头:

$your_array = [
    ['Fitness101','FT101'],
    ['Fitness101','EA101'],
    // etc.
];

然后就会这样:

foreach ($your_array as $row) {
    $result[$row[0]][0] = $row[0];  // write or overwrite the first column
    $result[$row[0]][] = $row[1];   // append the subsequent columns
}

此处$row[0]是带有“Fitness101”等的第一列,当您将其用作$result数组中的键时,您将把每个值添加到列中在该键指示的行中,因此它们将按照您想要的输出组合在一起。

如果你有一个字符串数组,那么它几乎是相同的,只是首先爆炸该行。

$your_array = [
    'Fitness101,FT101',
    'Fitness101,EA101',
    // etc.
];

foreach ($your_array as $row) {
    $row = explode(',', $row);
    $result[$row[0]][0] = $row[0];
    $result[$row[0]][] = $row[1];
}

答案 1 :(得分:-1)

假设您的输入格式如下:

$entries = [
    "Fitness101,FT101",
    "Fitness101,EA101",
    "Fitness101,RX101",
    "Fitness102,FT102",
    "Fitness102,EA102",
    "Fitness102,RX102",
    "Fitness103,FT103",
    "Fitness103,EA103",
    "Fitness103,RX103"
];

$levels = array();
foreach ($entries as $entry) {
    list($level, $class) = explode(',', $entry);
    if (!isset($levels[$level])) {
        $levels[$level] = $level;
    }
    $levels[$level] .= ','.$class;
}
$levels = array_values($levels);

echo json_encode($levels);
// Prints:
// ["Fitness101,FT101,EA101,RX101","Fitness102,FT102,EA102,RX102","Fitness103,FT103,EA103,RX103"]