簡體   English   中英

建立動態關聯多維數組

[英]build dynamic associative multi-dimensional array

我已經看到了很多有關多維數組,如何構建它們的問題,並且在嘗試某些答案的同時仍然遇到錯誤。 因此,我認為我嘗試做的事情實際上是不可能的,也許我應該改用JSON?

我有來自JSON對象返回的數據。 它有很多數據,我只需要少量。 現在我需要將其分類為日期:

 $temp_array = array();
        foreach ($data as $booking_id => $booking) {
            $setdate = '';
            $b = $this->getBooking($booking_id);
            foreach ($b as $k => $v) {
                $setdate = date('d-m-Y', $booking['start_date']);
                if(!in_array($setdate, $temp_array)) {
                    $temp_array = array('date' => $setdate);
                }
                $temp_array['date'][] = array($k => $v);
            }
        }

我需要日期為數組的第一個節點,而數據為第二個節點。 在迭代中找到新日期時,它將創建另一個新節點:

[0] => 1/10/16
           [0] => array( ['key'] =>['value'])
           [1] => array( ['key'] =>['value'])
           [2] => array( ['key'] =>['value'])
[1] => 7/10/16
           [0] => array( ['key'] =>['value'])
           [1] => array( ['key'] =>['value'])
           [2] => array( ['key'] =>['value'])
[2] => 14/10/16
           [0] => array( ['key'] =>['value'])
           [1] => array( ['key'] =>['value'])
           [2] => array( ['key'] =>['value'])
[3] => 21/10/16
           [0] => array( ['key'] =>['value'])
           [1] => array( ['key'] =>['value'])
           [2] => array( ['key'] =>['value'])

我似乎無法獲得任何結果,因為我所指的錯誤是[] operator not supported for stringsWarning: Attempt to modify property of non-object in根據此處找到的其他示例Warning: Attempt to modify property of non-object in

我認為這里的問題是數據不是按任何順序排列的,因此它可能會填充節點[0],然后填充[3],然后填充到[0],依此類推。

任何想法我到底在做什么錯?

謝謝

阿迪

更新資料

使用此代碼,這是每個步驟的中間內容:

 $b = $this->getBooking($booking_id);
 foreach ($b as $k => $v) {
     $setdate = date('d-m-Y', strtotime($booking['date_desc']));
     if(!in_array($setdate, $temp_dates)) {
         array_push($temp_dates, $setdate);
         $temp_array[]['date'] = $setdate;
     }
 }

給我這個結果:

Array ( [0] => Array ( [date] => 22-10-2016 )
        [1] => Array ( [date] => 01-10-2016 ) 
        [2] => Array ( [date] => 08-10-2016 ) 
        [3] => Array ( [date] => 15-10-2016 )
)

哪個是對的。 所以現在,我需要添加一次,每次到達$ tem_array有標題的日期時,添加另一個數組:

Array ( [0] => Array ( [date] => 22-10-2016 ) => [0] => $data
                                                 [1] => $data
                                                 [2] => $data
        [1] => Array ( [date] => 01-10-2016 ) => [0] => $data
                                                 [1] => $data 
                                                 [2] => $data
        [2] => Array ( [date] => 08-10-2016 ) => [0] => $data
        [3] => Array ( [date] => 15-10-2016 ) => [0] => $data
                                                 [1] => $data
)

希望這能更好地解釋它。 我的第一點正確,但是當日期已經在那里時,我需要向上移動一個節點。

我想我太復雜了。 這是我想要的最終代碼。

function sortcf($data) {
        $temp_array = array();
        $temp_dates = array();
        foreach ($data as $booking_id => $booking) {
            $b = $this->getBooking($booking_id);
            $setdate = date('d-m-Y', strtotime($booking['date_desc']));
            $temp_array[$setdate][] = ($b);
        }
        $this->wcg_am_data = $temp_array;
    }

暫無
暫無

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

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