如何将数组中一个键的值复制到PHP中的空键?

时间:2015-04-15 17:27:11

标签: php arrays

我为没有更好地措辞标题而道歉。我愿意接受使其更具描述性的建议。

我已经从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值,它可能需要保持不变或从数组中删除。 (我真的不需要这一行,并且会在我的脚本中忽略它。)

2 个答案:

答案 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;
    }
}
?>