【问题标题】:Loop logic goes wrong while adjusting array调整数组时循环逻辑出错
【发布时间】:2012-04-04 15:04:08
【问题描述】:

我有一个数组,它从一个我无法更改的表中以 int 类型表示 UNIX 时间。有些行不是完整的 UNIX 时间戳,而是短了几个整数。这是有原因的,但对于我的脚本,我需要字符串将非 10 位行更改为“0”,将 10 位行更改为日期(“Ymd”,?)形式。这是数组 $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
)

这是脚本:

$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

有人可以帮我弄清楚这个循环有什么问题吗?在 ELSE 开始后的所有 1970 年日期,我都没有得到正确的结果。我还是新手。

谢谢。

【问题讨论】:

    标签: php mysql arrays loops foreach


    【解决方案1】:

    使用下面的脚本

    <?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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-25
      • 2012-12-30
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多