簡體   English   中英

如何從數組鍵中刪除前導零

[英]How to remove leading zeros from array keys

我正在使用Codeigniter 3(日歷類),我有這個函數來獲取日歷數據(該表只有一個日期列和一個數據列):

    function get_calendar_data($year, $month) {
    $query = $this->db->select('date, data')->from('calendar')->like('date', "$year-$month", 'after')->get();
    $cal_data = array();
    foreach ($query->result() as $row) {
        $cal_data[substr($row->date,8,2)] = $row->data;
    }
    return $cal_data;
}

它工作正常並生成一個月的數組,$ cal_data,包括作為鍵和值的天數(在這種情況下是顏色的名稱)和var_dump通常如下所示:

array (size=6)
26 => string 'amber' (length=5)
27 => string 'red' (length=3)
28 => string 'red' (length=3)
25 => string 'amber' (length=5)
'04' => string 'red' (length=3)
'07' => string 'red' (length=3)

日歷需要的。 但是,由於日歷似乎沒有需要它們,因此天數有前導零。 因此值不會顯示04和07.作為測試,我重寫了foreach循環說:

$cal_data[substr($row->date,9,1)] = $row->data;

所以鍵只能獲取日期字符串的最后一個字符,在這種情況下,4和7的值確實顯示正確。

有沒有一種簡單的方法來刪除前導零,所以鍵是4和7?

你可以這樣做(注意轉換為int):

foreach ($query->result() as $row) {
    $cal_data[(int)substr($row->date,8,2)] = $row->data;
}

我猜你既然SUBSTR(...,8,2),我認為這是一個完整的日期像2017年7月30日或類似的東西。
這意味着您可以使用date()來操作數據。

$cal_data[date("j", $row->date)] = $row->data;

日期(“j”)是沒有前導零的日期編號。
http://php.net/manual/en/function.date.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM