【发布时间】:2018-09-05 01:06:14
【问题描述】:
我有一个字符串,我为其提供了一个字符串索引。
我正在创建一个读取它的过程,我想知道是否存在一个我忽略或不知道的 php 函数,以便更轻松地执行此过程。
$数据:
Invoice No..... Sale Type Desc...... Misc Amt.... Misc Acc.. Misc Acc Desc.....................................
FOCF219611 CUSTOMER -0.02 8050 TOOLS & SUPPLIES - SERVICE
FOCF219669 CUSTOMER -14.49 8050 TOOLS & SUPPLIES - SERVICE
$fieldIndexes:
Array (
[0] => 15
[1] => 20
[2] => 12
[3] => 10
[4] => 50
)
将$data 拆分为$headers 数组:
array_push($headers, substr($data, 0, $fieldIndexes[0]));
array_push($headers, substr($data, $fieldIndexes[0], $fieldIndexes[1]));
array_push($headers, substr($data, $fieldIndexes[1], $fieldIndexes[2]));
array_push($headers, substr($data, $fieldIndexes[2], $fieldIndexes[3]));
array_push($headers, substr($data, $fieldIndexes[3], $fieldIndexes[4]));
是否有一个函数可以删除字符串的一部分——比如array_shift 的字符串?
我在想我可以循环$fieldIndexes,从字符串的开头提取第一个长度,依此类推,直到字符串为空并将其压缩为 3 行并使其可移植到任意数量的 fieldIndexes?
期望的结果:
Array
(
[HEADERS] => Array
(
[0] => Invoice No
[1] => Sale Type Desc
[2] => Misc Amt
[3] => Misc Acc
[4] => Misc Acc Desc
)
[1] => Array
(
[Invoice No] => FOCF219611
[Sale Type Desc] => CUSTOMER
[Misc Amt] => -0.02
[Misc Acc] => 8050
[Misc Acc Desc] => TOOLS & SUPPLIES - SERVICE
)
)
【问题讨论】:
-
您指定的输入的期望输出是什么?
-
您可以使用
fopen('php://temp', 'w+')将字符串放入temp和fwrite然后使用rewind和fgetc来计算字符告诉您点击偏移量等等等。如果您使用流包装器更喜欢文件句柄。 -
如果你有一些可用的分隔符,你可以看看 strtok。
-
我已经用想要的结果更新了问题
-
您能否更新它以包含更多内容,而不仅仅是标题。
array_combine大多数时候在 CSV(分隔的东西)上工作得很好,我会在那里打一个array_fill_keys和array_replace。但是是的。