代码之家  ›  专栏  ›  技术社区  ›  zeroanarchy

PHP日期周期数组为单个字符串

  •  0
  • zeroanarchy  · 技术社区  · 2 年前

    我正试图生成一个包含日期和成本两个值的字符串

    如果用户选择的开始日期为1/1/2025,结束日期为3/1/2025,并且成本为250,我希望构建一个字符串,如下所示。

    "20250101":250,"20250102":250
    

    我正在使用以下代码。

    $pricepern = 250;
        
    $period = new \DatePeriod(
        new \DateTime($start_date),
        new \DateInterval('P1D'),
        new \DateTime($end_date));
    
    foreach ($period as $key => $value) {
        $individualdays = '"'.$value->format('Ymd').'":'.$pricepern.',';
        echo $individualdays;   // It works in here     
    }
        
    echo $individualdays;   // It only provides the last value out here
    

    如果能帮助我理解如何为每个字符串生成一个外部字符串,我将不胜感激。我确实尝试过在外部内爆,但它表明该值不是数组。

    干杯 零

    2 回复  |  直到 2 年前
        1
  •  1
  •   Jannickla    2 年前

    要构建包含所有日期成本对的单个字符串,可以将每个日期成本对连接起来 $individualdays 字符串,然后删除后面的逗号。以下是一种方法:

    $start_date = '2025-01-01';
    $end_date = '2025-03-01';
    $pricepern = 250;
        
    $period = new \DatePeriod(
        new \DateTime($start_date),
        new \DateInterval('P1D'),
        new \DateTime($end_date)
    );
    
    $fullString = ''; // Initialize an empty string to hold the full result
    
    foreach ($period as $key => $value) {
        $individualdays = '"' . $value->format('Ymd') . '":' . $pricepern . ',';
        $fullString .= $individualdays; // Concatenate each day string
    }
    
    // Remove the trailing comma
    $fullString = rtrim($fullString, ',');
    
    echo $fullString;
    

    此代码将生成所需的输出字符串,其中所有日期-成本对连接在一起,并删除尾部逗号。

        2
  •  1
  •   Barmar    2 年前

    把所有的 date:cost 数组中的对并使用 implode() 将它们与逗号分隔符组合。

    $days_array = array_map(fn($value) => '"'.$value->format('Ymd').'":'.$pricepern, $period);
    $individual_days = implode(',', $days_array);
    
    echo $individual_days;
    
    推荐文章