【发布时间】:2020-06-22 07:05:42
【问题描述】:
MultidimArrays“正常”展平的答案我发现了很多 - 但我找不到适用于这两个警告的解决方案: A) 保留钥匙和 B) 不同长度的数组
例如我正在尝试转换:
array(2) {
[0]=>
array(5) {
["Name"]=>
string(9) "Max Muster"
["phoneNumbers"]=>
array(3) {
[0]=>
string(7) "1234567"
[1]=>
string(7) "2345678"
}
["manager"]=>
string(13) "None - is CEO"
}
[1]=>
array(5) {
["Name"]=>
string(9) "Ada Brown"
["phoneNumbers"]=>
array(1) {
[0]=>
string(7) "AJP4564"
}
["manager"]=>
string(10) "Max Muster"
}
到这里:
Name, Max Muster, phoneNumbers, 1234567, 2345678, manager, None - is CEO, Name, Ada Brown, phoneNumbers, AJP4564, manager, Max Muster
...在 csv 中使用
但是这个(简短的,不错的)解决方案丢失了密钥:
foreach ($arrayMultiDim as $onePerson) {
$arrayOneDim = [];
array_walk_recursive(
$onePerson,
function ($oneDim) use (&$arrayOneDim) {
$arrayOneDim[] = $oneDim . ', ';
}
);
}
奖励:我在哪里添加 ' ' 或 ';'在写入 CSV 之前创建一个新行? 以及如何避免在一行的最后一个值之后出现“,”?
理想地创造某物。像这样:
Name, Max Muster, phoneNumbers, 1234567, 2345678, manager, None - is CEO
Name, Ada Brown, phoneNumbers, AJP4564, manager, Max Muster
【问题讨论】:
-
只是几个问题。为什么 CSV 的第一行没有标题,而其余行没有数据?其次,CSV 通常有固定数量的列吗?最后,为什么需要保留密钥?
-
你是对的 - 通常我会将第一行作为标题,其他行作为数据。但是这样我可以很容易地分解它并随后添加新的字段。这也是我想保留钥匙的原因。