我为没有更好地措辞标题而道歉。我愿意接受使其更具描述性的建议。
我已经从csv文件创建了一个多维数组。但是,csv文件的格式很差,我最终得到的数组看起来像下面的示例。每个数组都包含免费电话号码[INBOUND NUMBER]
的数据。但是,[INBOUND NUMBER]
只有第一天的值,后续日期没有任何值。在Excel中打开时它是人类可读的,但我需要使它更加统一,以便我可以在PHP中处理它。
使用PHP,如何从第一个[INBOUND NUMBER]
获取值并在其他日子将其复制到[INBOUND NUMBER]
?
以下是2月份两个虚构的免费电话号码的缩小示例:
Array
(
[INBOUND NUMBER] => 8005555555
[DATE] => 2/1/2015
[TOTAL CALL DURATION] => 0
)
[1] => Array
(
[INBOUND NUMBER] =>
[DATE] => 2/2/2015
[TOTAL CALL DURATION] => 0
)
[25] => Array
(
[INBOUND NUMBER] =>
[DATE] => 2/26/2015
[TOTAL CALL DURATION] => 0
)
[26] => Array
(
[INBOUND NUMBER] =>
[DATE] => 2/27/2015
[TOTAL CALL DURATION] => 0
)
[27] => Array
(
[INBOUND NUMBER] => SUBTOTAL - 8005555555
[DATE] =>
[TOTAL CALL DURATION] => 12.52
)
[1] => Array
(
[INBOUND NUMBER] => 8006666666
[DATE] => 2/1/2015
[TOTAL CALL DURATION] => 0
)
[1] => Array
(
[INBOUND NUMBER] =>
[DATE] => 2/2/2015
[TOTAL CALL DURATION] => 0
)
[25] => Array
(
[INBOUND NUMBER] =>
[DATE] => 2/26/2015
[TOTAL CALL DURATION] => 0
)
[26] => Array
(
[INBOUND NUMBER] =>
[DATE] => 2/27/2015
[TOTAL CALL DURATION] => 0
)
[27] => Array
(
[INBOUND NUMBER] => SUBTOTAL - 8006666666
[DATE] =>
[TOTAL CALL DURATION] => 16.32
)
注意:
通过Excel修复csv文件中的格式是一个选项,但它 会非常耗时(当有数千行时 在Excel中打开。
该月的最后一个条目是该数字和的数据的总和
[INBOUND NUMBER]
在该行上具有不同的SUBTOTAL - 8005555555
值,它可能需要保持不变或从数组中删除。 (我真的不需要这一行,并且会在我的脚本中忽略它。)
答案 0 :(得分:1)
最简单(你可以在从CSV读入时执行此操作):
$in = '';
foreach($array as &$value) {
if(!empty($value['INBOUND NUMBER'])) {
$in = $value['INBOUND NUMBER'];
} else {
$value['INBOUND NUMBER'] = $in;
}
}
如果子数组中的第一个INBOUND NUMBER
为空,那么显然它不会改变以下任何内容,直到它遇到一个值为止。
答案 1 :(得分:1)
<?php
$number = '';
for ($i = 0; $i < count($rows); $i++) {
if (isset($rows[$i]['number'])) {
$number = $rows[$i]['number'];
} else {
$rows[$i]['number'] = $number;
}
}
?>