Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Sorting_Merge_Array Merge - Fatal编程技术网

Php 如何使用另一个数组中的列实现新数组';什么行?[菲律宾]

Php 如何使用另一个数组中的列实现新数组';什么行?[菲律宾],php,arrays,sorting,merge,array-merge,Php,Arrays,Sorting,Merge,Array Merge,我有这种数组: 2020-01; Starter1; 11,4% 2020-01; Starter2; 6,9% 2020-01; Starter3; 9,5% 2020-01; Starter4; 11,1% 2020-02; Starter1; 5,8% 2020-02; Starter2; 5,8% 2020-02; Starter3; 10,0% 2020-02; Starter4; 6,4% 我需要得到这个: Year; Starter1; Starter2; Starter3

我有这种数组:

2020-01; Starter1; 11,4%
2020-01; Starter2; 6,9%
2020-01; Starter3; 9,5%
2020-01; Starter4; 11,1%
2020-02; Starter1; 5,8%
2020-02; Starter2; 5,8%
2020-02; Starter3; 10,0%
2020-02; Starter4; 6,4%
我需要得到这个:

Year;    Starter1; Starter2; Starter3; Starter4
2020-01; 11,4%;     6,9%;     9,5%;     11,1%
2020-02; 5,8%;     10,0%;     10,0%;    6,4%
有人能帮我吗?

使用CSV,然后只需将第一列和第二列指定为数组键,对其进行归一化,然后,一旦有了这些键,就可以对其进行循环并生成所需的结果

因此,旨在使这种结构:

Array
(
    [2020-01] => Array
        (
            [Starter1] => 11,4%
            [Starter2] => 6,9%
            [Starter3] => 9,5%
            [Starter4] => 11,1%
        )

    [2020-02] => Array
        (
            [Starter1] => 5,8%
            [Starter2] => 5,8%
            [Starter3] => 10,0%
            [Starter4] => 6,4%
        )

)
您可以循环进行以下操作:

Year;    Starter1; Starter2; Starter3; Starter4
2020-01; 11,4%;    6,9%;     9,5%;     11,1%;    
2020-02; 5,8%;     5,8%;     10,0%;    6,4%; 
比如:


如果您在数组上显示
var\u dump
print\r
方法的结果,这将非常有用。@ADyson我不知道从哪里开始。我有一个包含这种类型内容的txt文件,我使用“fgets”读取它,最后用分隔符“;”分解每一行。我需要将这些数据包含到谷歌图表中,我需要这种数组结构。@Parsa_Gholipur它只是一个数组,就这么简单,我认为你不需要转储或打印。我的问题是如何将该数组重新构造为一个新数组,基本上是使用原始数组行中的列创建一个新的多维数组,如主题中所示。非常感谢,伙计!)np,只要所有COL都已填充且数据(日期)有序,它就应该可以工作。如果您想要更健壮的东西,您应该将每一行解析为一个db,然后查询该db,或者您需要实现排序,虽然也可以,但正如您所看到的,将所有数据放在db中可能更容易
<?php
$str = '2020-01; Starter1; 11,4%
2020-01; Starter2; 6,9%
2020-01; Starter3; 9,5%
2020-01; Starter4; 11,1%
2020-02; Starter1; 5,8%
2020-02; Starter2; 5,8%
2020-02; Starter3; 10,0%
2020-02; Starter4; 6,4%';

// normalise and group data
$result = [];
foreach(str_getcsv($str, "\n") as $row){
    $row = array_map('trim', str_getcsv($row, ";"));
    $result[$row[0]][$row[1]] = $row[2];
}

// loop over to specification
echo 'Year;    Starter1; Starter2; Starter3; Starter4'.PHP_EOL;
foreach ($result as $year => $row) {
    echo $year.'; ';
    foreach ($row as $key => $col)
        echo $col.";".str_repeat(' ', (($v = strlen($key)-(strlen($col)-1)) && $v > 0) ? $v : 0);
    echo PHP_EOL;
}