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;
}