Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组、动态数组名或其他技术_Php_Arrays_Dynamic - Fatal编程技术网

PHP数组、动态数组名或其他技术

PHP数组、动态数组名或其他技术,php,arrays,dynamic,Php,Arrays,Dynamic,我继承了一个项目,在该项目中,我需要按以下格式向表中添加数据 Fitness101,FT101,EA101,RX101 我在一个数组中得到的是以下内容: Fitness101,FT101 Fitness101,EA101 Fitness101,RX101 Fitness102,FT102 Fitness102,EA102 Fitness102,RX102 Fitness103,FT103 Fitness103,EA103 Fitness103,RX103 我需要根据每个健身水平对课程进行分组

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

Fitness101,FT101,EA101,RX101
我在一个数组中得到的是以下内容:

Fitness101,FT101
Fitness101,EA101
Fitness101,RX101
Fitness102,FT102
Fitness102,EA102
Fitness102,RX102
Fitness103,FT103
Fitness103,EA103
Fitness103,RX103
我需要根据每个健身水平对课程进行分组,并添加以下3个记录/行:

Fitness101,FT101,EA101,RX101
Fitness102,FT102,EA102,RX102
Fitness103,FT103,EA103,RX103
实现这一目标的最佳方法是什么

我尝试了几个if/while/foreach语句/循环,但没有成功

是否可以使用动态数组名,或者我是否正在使其变得过于复杂

谢谢

如果我打印阵列,它看起来如下所示:

[0] => Fitness101,FT101
[1] => Fitness101,EA101
[2] => Fitness101,RX101
[4] => Fitness102,FT102
[5] => Fitness102,EA102
[6] => Fitness102,RX102
[7] => Fitness103,EA103
[8] => Fitness103,EA103
[9] => Fitness103,RX103
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
}

假设输入的格式如下所示:

$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"]

对于这种类型的分组问题,通常可以使用希望分组的列作为结果数组中的键。如果以这种格式的数组开始:

$your_array = [
    ['Fitness101','FT101'],
    ['Fitness101','EA101'],
    // etc.
];
然后它会像这样工作:

[0] => Fitness101,FT101
[1] => Fitness101,EA101
[2] => Fitness101,RX101
[4] => Fitness102,FT102
[5] => Fitness102,EA102
[6] => Fitness102,RX102
[7] => Fitness103,EA103
[8] => Fitness103,EA103
[9] => Fitness103,RX103
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];
}

您从多维数组、字符串数组、一个长字符串还是什么开始?你能编辑这个问题来显示你从PHP代码开始的内容吗?