亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何構建對象/數組?

如何構建對象/數組?

PHP
jeck貓 2023-09-15 21:10:06
我對 PHP 相當陌生,所以我不知道如何使用這些數據集。我進行 MySQL 選擇并返回一個像這樣的對象:{  "membername": "NAME",  "bookingdate": "2020-02-03",  "categoryid": 1,  "dailyworkhourssum": "7.70"},{  "membername": "NAME",  "bookingdate": "2020-02-03",  "categoryid": 3,  "dailyworkhourssum": "1.2"},{  "membername": "NAME",  "bookingdate": "2020-02-05",  "categoryid": 3,  "dailyworkhourssum": "7.70"},我想迭代一遍,最后它應該看起來像這樣:{      "membername": "NAME",      "bookingdate": "2020-02-03",      "categoryid1": true,      "categorid3": true,      "dailyworkhourssum1": "7.70",      "dailyworkhourssum3": "1.2"    },    {      "membername": "NAME",      "bookingdate": "2020-02-05",      "categoryid": 3,      "dailyworkhourssum": "7.70"    },這樣做的作用是將兩個字段合并在一起(如果它們具有相同的字段bookingdate),以便我可以將其顯示在表格中而不會重復出現日期。我的問題:我不知道這種類型的數據叫什么。我不知道如何創建這樣的東西。我可以向這種類型的數據添加字段,$data->newField = example所以我認為這是一個對象。
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

在 JS 中,它被稱為對象,但在 PHP 中,您將使用關聯數組。在你的例子中,我認為你有一個關聯數組的數組。它看起來像這樣:


    $books = [

     [

       "membername" => "NAME",

       "bookingdate" => "2020-02-03",

       "categoryid" => 1,

       "dailyworkhourssum" => "7.70"

     ],

     [

       "membername" => "NAME",

       "bookingdate" => "2020-02-03",

       "categoryid" => 3,

       "dailyworkhourssum" => "1.2"

     ],

     [

       "membername" => "NAME",

       "bookingdate" => "2020-02-05",

       "categoryid" => 3,

       "dailyworkhourssum" => "7.70"

     ]

   ];

如果您想合并具有相同“bookingdate”的數組,那么我建議您循環遍歷該數組,并將其元素添加到另一個以 bookingdates 作為鍵的關聯數組,并檢查是否已經存在這樣的鍵,然后合并數組, 像這樣:


$merged = [];

foreach ($books as $book) {

    $date = $book['bookingdate'];

    if (isset($merged[$date])) {

        $merged[$date] = $merged[$date] + $book;

    } else {

        $merged[$date] = $book;

    }

}

我認為這不是一個有效的代碼(沒有時間,抱歉),但我希望您能明白這個想法。


如果您想要一個“列表”而不是關聯數組,那么您可以這樣做:


 $mergedList = array_values($merged);

這樣你就可以擺脫字符串鍵了。


查看完整回答
反對 回復 2023-09-15
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

如果我理解正確的話,您將獲得一個包含 4 列和可變行數的表,并且您希望將其轉換為具有可變列數的表。為此,使用每一項都與前一項不同的數據結構可能會使一切變得比它需要的更困難。我建議你使用固定結構:


// I'm assuming you have a PHP array as starting point

$input = [

    [

        'membername' => 'NAME',

        'bookingdate' => '2020-02-03',

        'categoryid' => 1,

        'dailyworkhourssum' => '7.70',

    ],

    [

        'membername' => 'NAME',

        'bookingdate' => '2020-02-03',

        'categoryid' => 3,

        'dailyworkhourssum' => '1.2',

    ],

    [

       'membername' => 'NAME',

       'bookingdate' => '2020-02-05',

       'categoryid' => 3,

       'dailyworkhourssum' => '7.70',

    ],

];


$output = [];

foreach ($input as $data) {

    // We'll group by booking date

    if (!isset($output[$data['bookingdate']])) {

        $output[$data['bookingdate']] = [

            'membername' => $data['membername'],

            'bookingdate' => $data['bookingdate'],

            'categoryid' => $data['categoryid'],

            'dailyworkhourssum' => [],

        ];

    }

    // A single date may have several daily work hours

    $output[$data['bookingdate']]['dailyworkhourssum'][] = $data['dailyworkhourssum'];

}


// We discard array keys (we only needed them to group)

echo json_encode(array_values($output));

[{

    "membername": "NAME",

    "bookingdate": "2020-02-03",

    "categoryid": 1,

    "dailyworkhourssum": ["7.70", "1.2"]

}, {

    "membername": "NAME",

    "bookingdate": "2020-02-05",

    "categoryid": 3,

    "dailyworkhourssum": ["7.70"]

}]

無論您在何處使用此 JSON,您只需要循環該dailyworkhourssum數組即可。您可能還想在打印表格之前循環整個結構并保留一個計數器以確定最大列數,以便您可以在需要的地方繪制空單元格(表格是矩形的)。


查看完整回答
反對 回復 2023-09-15
  • 2 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號