调整数组时循环逻辑出错


Loop logic goes wrong while adjusting array

我有一个数组,它以int类型表示无法更改的表中的UNIX时间。有些行不是完整的UNIX时间戳,而是短了几个整数。表中出现这种情况是有原因的,但对于我的脚本,我需要字符串将非10位的行更改为"0",将10位的列更改为日期("Ymd",?)形式

Array
(
    [0] => 1332594303
    [1] => 1330960502
    [2] => 1331227649
    [3] => 1331305503
    [4] => 1332594303
    [5] => 1331147102
    [6] => 1332680702
    [7] => 1331301902
    [8] => 1331048163
    [9] => 1332248704
    [10] => 1332421503
    [11] => 31536000
    [12] => 1331816703
    [13] => 604800
    [14] => 0
    [15] => 31536000
    [16] => 1332248703
    [17] => 31536000
    [18] => 1361922903
)

这是脚本:

$k=0
$l=0
foreach ($qucls as $dt[$k]){
    if (strlen($dt[$k]) < 10)
      $dt[$k++] = '0';
    else {$dt[$k++] = date("Ymd", $dt[$l++]);
 }
}
for ($l=0; $l < $k; $l++){
}

这是循环后的结果:

Array
(
    [0] => 20120324
    [1] => 20120305
    [2] => 20120308
    [3] => 20120309
    [4] => 20120324
    [5] => 20120307
    [6] => 20120325
    [7] => 20120309
    [8] => 20120306
    [9] => 20120320
    [10] => 20120322
    [11] => 0
    [12] => 19700101
    [13] => 0
    [14] => 0
    [15] => 0
    [16] => 19700817
    [17] => 0
    [18] => 19700101
)

请注意,日期表单的格式是正确的,直到它达到strlen<10.在这一点上,它将小于10的长度整数更改为"0",这是正确的,但之后的日期被弄错了。它继续改变<正确地将10位数字1改为0。

有人能帮我找出这个循环中出了什么问题吗?在ELSE成立后的1970年,我并没有得到正确的结果。我在这方面还是个新手。

谢谢。

使用以下脚本

<?php
$qucls = array(
    0 => 1332594303,
    1 => 1330960502,
    2 => 1331227649,
    3 => 1331305503,
    4 => 1332594303,
    5 => 1331147102,
    6=> 1332680702,
    7=> 1331301902,
    8=> 1331048163,
    9=> 1332248704,
    10 => 1332421503,
    11 => 31536000,
    12 => 1331816703,
    13 => 604800,
    14 => 0,
    15 => 31536000,
    16 => 1332248703,
    17 => 31536000,
    18 => 1361922903
    );
foreach ($qucls as $key=>$value){
    if (strlen($value)< 10){
        $dt[] = 0;
    }else{
        $dt[] = date("Ymd", $value);
    }
 }
echo "<pre>";
print_r($array);
print_r($dt);
exit;
?>

您将得到以下输出

Array
(
    [0] => 20120324
    [1] => 20120305
    [2] => 20120308
    [3] => 20120309
    [4] => 20120324
    [5] => 20120307
    [6] => 20120325
    [7] => 20120309
    [8] => 20120306
    [9] => 20120320
    [10] => 20120322
    [11] => 0
    [12] => 20120315
    [13] => 0
    [14] => 0
    [15] => 0
    [16] => 20120320
    [17] => 0
    [18] => 20130226
)