【问题标题】:PHP Loop use modified data in iterationPHP Loop 在迭代中使用修改后的数据
【发布时间】:2023-02-26 19:29:58
【问题描述】:

我有一个像下面这样的数组

Array
(
[0] => Array
    (
        [id] => 9
        [needed_at] => 2023-02-26 03:31:04
        [ended_at] => 2023-02-26 04:31:04
        [add] => 20
    )

[1] => Array
    (
        [id] => 6
        [needed_at] => 2023-02-26 04:51:04
        [ended_at] => 2023-02-26 05:51:04
        [add] => 30
    )

[2] => Array
    (
        [id] => 7
        [needed_at] => 2023-02-26 09:21:04
        [ended_at] => 2023-02-26 10:21:04
        [add] => 30
    )

)

现在在一个循环中,我想修改 0 索引中的 ended_at,然后使用这个修改后的 ended_at 替换 1 索引中的 needed_at。这样也想把2index替换成1index的修改ended_at等等

我试过的是

foreach($jobs as $k => $j){
            $s = $k+1;
            $date = new \DateTimeImmutable($j->ended_at);
            $add = $j->add;
            $date_new = $date->modify('+'.$add.' minutes');
            $needed_at = $date_new->format('Y-m-d H:i:s');
            $data['needed_at'] = $needed_at;
            
            $date2 = new \DateTimeImmutable($needed_at);
            $ended_at = $date2->modify('+60 minutes');
            $data['ended_at'] = $ended_at->format('Y-m-d H:i:s');

                $d[]=[
                    'id' => $jobs[$s]->id,
                    'needed_at' => $needed_at,
                    'ended_at' => $data['ended_at'],
                    'add' => $add
                ];

}

它不工作。是否可以将第一次迭代修改后的数据用于第二次迭代?需要帮忙

【问题讨论】:

  • 目前还不清楚你的问题是“我试过的是......”关于这个问题:“是否可以将第一次迭代修改后的数据用于第二次迭代?”。答案是肯定的,这应该是可能的。
  • @Luuk 我想修改0 索引中的数据,然后将修改后的数据用于1 索引
  • 是的,但不清楚为什么你没有用“你尝试过的”来做。我应该猜吗?
  • @Luuk 我试过的方法不起作用。我需要一个想法如何实现目标
  • 你试过调试这个吗? (请参阅:How to debug PHP code,或 stackoverfflow.com 上显示如何调试您的 PHP 代码的任何其他页面?)

标签: php mysql arrays codeigniter


【解决方案1】:

尝试这个

foreach($jobs as $k => $j){
    $s = $k+1;
    $date = new DateTimeImmutable($j['ended_at']); // Modified to use array notation for $j
    $add = $j['add']; // Modified to use array notation for $j
    $date_new = $date->modify('+'.$add.' minutes');
    $needed_at = $date_new->format('Y-m-d H:i:s');
    $data['needed_at'] = $needed_at;
    
    $date2 = new DateTimeImmutable($needed_at);
    $ended_at = $date2->modify('+60 minutes');
    $data['ended_at'] = $ended_at->format('Y-m-d H:i:s');

    $d[]=[
        'id' => $jobs[$s]['id'], // Modified to use array notation for $jobs
        'needed_at' => $data['needed_at'],
        'ended_at' => $data['ended_at'],
        'add' => $add
    ];

    // Update the value of $jobs[$s]['needed_at'] for the next iteration
    $jobs[$s]['needed_at'] = $data['ended_at'];
}

【讨论】:

    猜你喜欢
    • 2016-09-08
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多