Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengalih keluar nilai dari tatasusunan Laravel

Saya cuba mencipta sistem tempahan hari yang sangat asas dan perlu mengembalikan semua tarikh dalam julat dan kemudian mengalih keluar tarikh yang dipilih daripada julat itu. Saya mencuba kod berikut tetapi menyedari ini mengalih keluar pendua, yang baik, tetapi saya perlu mengalih keluar tarikh itu juga.

Bolehkah sesiapa mencadangkan cara yang baik untuk melakukan ini?

Dalam contoh di bawah, saya cuma nak tengok:

2022-04-03T00:00:00.000000Z

2022-04-04T00:00:00.000000Z

2022-04-05T00:00:00.000000Z

$start_date = "2022-04-01";
$end_date = "2022-04-05";

$datesToRemove = [
   '2022-04-01T00:00:00.000000Z',
   '2022-04-02T00:00:00.000000Z'
];

$range = Carbon::parse($start_date)->toPeriod($end_date)->toArray();
$available = array_unique(array_merge($range, $datesToRemove));
return $available;

P粉805535434P粉805535434225 hari yang lalu475

membalas semua(1)saya akan balas

  • P粉186897465

    P粉1868974652024-04-01 09:57:25

    Untuk membandingkan, nilai yang dibandingkan mesti mempunyai format yang sama. Saya memutuskan untuk menukar $datesToRemove kepada format Karbon. Anda boleh menggunakan gelung bersarang dan menyemak menggunakan fungsi PHP in_array().

    $start_date = "2022-04-01";
    $end_date = "2022-04-05";
    
    $datesToRemove = [
    "2022-04-01T00:00:00.000000Z",
    "2022-04-02T00:00:00.000000Z"
    ];
    
    $range = \Carbon\Carbon::parse($start_date)->toPeriod($end_date)->toArray();
    $datesToRemove2 = [];
    foreach($datesToRemove as $r) {
        $datesToRemove2[] = \Carbon\Carbon::parse($r);
    }
    
    $res = [];
    foreach($datesToRemove2 as $index => $d1) {
        if(in_array($d1, $range)) {        
            unset($range[$index]);        
        }
    }
    
    return $range;
    

    Output

    {
      "2":"2022-04-03T00:00:00.000000Z",
      "3":"2022-04-04T00:00:00.000000Z",
      "4":"2022-04-05T00:00:00.000000Z"
    }

    bermaksud

    balas
    0
  • Batalbalas