Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中,如何将值从数组的一个键复制到空键?_Php_Arrays - Fatal编程技术网

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

在PHP中,如何将值从数组的一个键复制到空键?,php,arrays,Php,Arrays,我很抱歉没有把标题写得更好。我愿意接受让它更具描述性的建议 我已经从csv文件创建了一个多维数组。但是,csv文件的格式很差,我最终得到的数组与下面的示例类似。每个数组包含免费电话号码的数据,[入站号码]。但是,[INBOUND NUMBER]仅在第一天有一个值,在随后的几天没有值。当在Excel中打开时,它是人类可读的,但我需要使它更加统一,以便我可以在PHP中处理它 使用PHP,我如何从第一个[INBOUND NUMBER]中获取值,并在其他日期将其复制到[INBOUND NUMBER] 下

我很抱歉没有把标题写得更好。我愿意接受让它更具描述性的建议

我已经从csv文件创建了一个多维数组。但是,csv文件的格式很差,我最终得到的数组与下面的示例类似。每个数组包含免费电话号码的数据,
[入站号码]
。但是,
[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]
    在该行上有一个不同的值
    小计-80055555
    ,该值需要保持不变或从数组中删除。(我真的不需要这一行,在我的脚本中将忽略它。)

最简单的方法是(您可以在从CSV读取时执行此操作):

如果子数组中的第一个
入站编号为空,那么显然,在遇到一个带有值的编号之前,它不会更改以下任何一项。


<?php
$number = '';
for ($i = 0; $i < count($rows); $i++) {
    if (isset($rows[$i]['number'])) {
        $number = $rows[$i]['number'];
    } else {
        $rows[$i]['number'] = $number;
    }
}
?>

它始终是第一个数字,还是您正在为有数字的行更改它?不知道为什么有人对此投了否决票-因为没有评论,我正在投票,这样@crystal就不会因为毫无意义的否决票而受到处罚。为什么人们会这样做?!如果你想否决投票,那就给出你的理由!谢谢-我很感激@彼得堡1号<代码>编号
不是索引2
isset
将始终返回true(如果为)。简而言之,没有工作。“AbraCadaver,你说得对,但在这两种情况下,我都不会考虑否决它。第一个甚至不值得一提——因为这不是一个代码编写商店,如果OP无法找出如何更改它以匹配他的索引,那么就存在更深层次的问题。:-)第二个当然值得一提,这样回答者就可以修正它,但不是说答案没用的否决票……而且,即使有人做出了第二个值得否决票的价值判断,没有解释性评论的否决票对任何人有什么帮助?
<?php
$number = '';
for ($i = 0; $i < count($rows); $i++) {
    if (isset($rows[$i]['number'])) {
        $number = $rows[$i]['number'];
    } else {
        $rows[$i]['number'] = $number;
    }
}
?>