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

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

在 PHP 中從順序數組創建嵌套數組

在 PHP 中從順序數組創建嵌套數組

PHP
呼喚遠方 2023-07-21 18:29:45
我需要在 PHP 中對數組進行排序的幫助。我收到這些數組,如下所示:Array (    [0] => Array (        [0] => Array (            [id] => 1            [username] => STLUserFolks            [event_id] => 7e0a2faa-43c8-4552-b0ec-c4d0fa6c00d1            [event_on] => 2020-06-29 17:39:25.93432            [ent_pix] =>            [\"images/events/STLUserFolks/tammy1.jpeg\",\"images/events/STLUserFolks/tammy2.jpeg\",\"images/events/STLUserFolks/tammy3.jpeg\",\"images/events/STLUserFolks/tammy4.jpeg\",\"images/events/STLUserFolks/tammy5.jpeg\",\"images/events/STLUserFolks/tammy6.jpeg\"]            [amount] => 20            [event_title] => Fun on vacation with friends.            [event_type] => mix            [event_details] => Saw Great and interesting sites today!        )    )    [1] => Array (        [0] => Array (            [id] => 1            [username] => STLUserFolks            [event_id] => debd6476-4f24-4d2c-9973-7c36d256079d            [event_on] => 2020-07-09 05:39:10.588842            [ent_pix] =>            [\"images/events/STLUserFolks/680.JPG\",\"images/events/STLUserFolks/681.JPG\",\"images/events/STLUserFolks/682.JPG\"]            [amount] => 25            [event_title] => Sexy Warm            [event_type] => photos            [event_details] => Feeling the sun on our faces.        )        [1] => Array (            [id] => 1            [user_id] => 2            [username] => STLUserFolks            [member_user] => spiffy_user            [comment_text] => Amazing! you guys are simply amazing!            [created_on] => 2020-07-10 15:04:46.480001            [comment_id] => c803294d-8483-43c9-a76b-4cba56795266            [event_id] => debd6476-4f24-4d2c-9973-7c36d256079d        )    )    [2] => Array (        [0] => Array (            [id] => 1            [username] => STLUserFolks            [event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63            [event_on] => 2020-07-09 07:11:32.840511            [ent_pix] =>            我需要能夠循環這些數組以將注釋數組([1] 及以上)應用到主數組 [0]。或者我需要 [0] 之后的順序數組像這樣嵌套:
查看完整描述

2 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

假設您提供的輸入數據位于 data.php 中:


<?php


$data = include('data.php');


$result = [];

foreach ($data as $row) {

  $user = $row[0];


  foreach ($row as $k => $element) {

    if ($k === 0) {

      $user = $element;

      $user['user_comments'] = [];   

    } else {

      $user['user_comments'][] = $element;

    }

  }


  $result[] = $user;

}


var_dump($result);

結果是:


array(3) {

  [0]=>

  array(10) {

    ["id"]=>

    int(1)

    ["username"]=>

    string(12) "STLUserFolks"

    ["event_id"]=>

    string(36) "7e0a2faa-43c8-4552-b0ec-c4d0fa6c00d1"

    ["event_on"]=>

    string(25) "2020-06-29 17:39:25.93432"

    ["ent_pix"]=>

    array(6) {

      [0]=>

      string(38) "images/events/STLUserFolks/tammy1.jpeg"

      [1]=>

      string(38) "images/events/STLUserFolks/tammy2.jpeg"

      [2]=>

      string(38) "images/events/STLUserFolks/tammy3.jpeg"

      [3]=>

      string(38) "images/events/STLUserFolks/tammy4.jpeg"

      [4]=>

      string(38) "images/events/STLUserFolks/tammy5.jpeg"

      [5]=>

      string(38) "images/events/STLUserFolks/tammy6.jpeg"

    }

    ["amount"]=>

    int(20)

    ["event_title"]=>

    string(29) "Fun on vacation with friends."

    ["event_type"]=>

    string(3) "mix"

    ["event_details"]=>

    string(38) "Saw Great and interesting sites today!"

    ["user_comments"]=>

    array(0) {

    }

  }

  [1]=>

  array(10) {

    ["id"]=>

    int(1)

    ["username"]=>

    string(12) "STLUserFolks"

    ["event_id"]=>

    string(36) "debd6476-4f24-4d2c-9973-7c36d256079d"

    ["event_on"]=>

    string(26) "2020-07-09 05:39:10.588842"

    ["ent_pix"]=>

    array(3) {

      [0]=>

      string(34) "images/events/STLUserFolks/680.JPG"

      [1]=>

      string(34) "images/events/STLUserFolks/681.JPG"

      [2]=>

      string(34) "images/events/STLUserFolks/682.JPG"

    }

    ["amount"]=>

    int(25)

    ["event_title"]=>

    string(9) "Sexy Warm"

    ["event_type"]=>

    string(6) "photos"

    ["event_details"]=>

    string(29) "Feeling the sun on our faces."

    ["user_comments"]=>

    array(1) {

      [0]=>

      array(8) {

        ["id"]=>

        int(1)

        ["user_id"]=>

        int(2)

        ["username"]=>

        string(12) "STLUserFolks"

        ["member_user"]=>

        string(11) "spiffy_user"

        ["comment_text"]=>

        string(37) "Amazing! you guys are simply amazing!"

        ["created_on"]=>

        string(26) "2020-07-10 15:04:46.480001"

        ["comment_id"]=>

        string(36) "c803294d-8483-43c9-a76b-4cba56795266"

        ["event_id"]=>

        string(36) "debd6476-4f24-4d2c-9973-7c36d256079d"

      }

    }

  }

  [2]=>

  array(10) {

    ["id"]=>

    int(1)

    ["username"]=>

    string(12) "STLUserFolks"

    ["event_id"]=>

    string(36) "3112f8ff-6119-48c4-810c-594585b5dc63"

    ["event_on"]=>

    string(26) "2020-07-09 07:11:32.840511"

    ["ent_pix"]=>

    array(4) {

      [0]=>

      string(40) "images/events/STLUserFolks/IMG_2135.JPEG"

      [1]=>

      string(40) "images/events/STLUserFolks/IMG_2136.JPEG"

      [2]=>

      string(40) "images/events/STLUserFolks/IMG_2137.JPEG"

      [3]=>

      string(40) "images/events/STLUserFolks/IMG_2140.JPEG"

    }

    ["amount"]=>

    int(25)

    ["event_title"]=>

    string(9) "New Pants"

    ["event_type"]=>

    string(6) "photos"

    ["event_details"]=>

    string(32) "Do these jeans make me look big?"

    ["user_comments"]=>

    array(2) {

      [0]=>

      array(8) {

        ["id"]=>

        int(1)

        ["user_id"]=>

        int(1)

        ["username"]=>

        string(12) "STLUserFolks"

        ["member_user"]=>

        string(8) "Some.Guy"

        ["comment_text"]=>

        string(17) "Wish I was there!"

        ["created_on"]=>

        string(26) "2020-07-10 10:45:42.809338"

        ["comment_id"]=>

        string(36) "19115a3e-87ca-410c-aade-c47122068bca"

        ["event_id"]=>

        string(36) "3112f8ff-6119-48c4-810c-594585b5dc63"

      }

      [1]=>

      array(8) {

        ["id"]=>

        int(1)

        ["user_id"]=>

        int(2)

        ["username"]=>

        string(12) "STLUserFolks"

        ["member_user"]=>

        string(11) "spiffy_user"

        ["comment_text"]=>

        string(27) "Looks like an amazing time."

        ["created_on"]=>

        string(26) "2020-07-10 15:09:05.275935"

        ["comment_id"]=>

        string(36) "bfd4d4e3-1c88-4f03-936f-cd456dba6096"

        ["event_id"]=>

        string(36) "3112f8ff-6119-48c4-810c-594585b5dc63"

      }

    }

  }

}

那是你要的嗎?


與您預期結果的唯一區別是,每一行都有“user_comments”數組,該數組可以為空,有一個或多個元素與此屬性丟失或被調用或user_comment如user_comments您的示例中所示。我相信這更加一致且更易于以編程方式使用,但如果需要,它也可以輕松調整為您發布的內容。


編輯評論和點贊。如果您想同時填寫 user_comments 和 user_likes,則必須檢測某些數據是否是評論或點贊。我這樣做是這樣的:如果數據包含comment_id,它是一條評論,如果它有like_id,它是一個喜歡。這是下面附加的簡單編輯。片段變成:


foreach ($row as $k => $element) {

    if ($k === 0) {

      $user = $element;

      $user['user_comments'] = [];

      $user['user_likes'] = [];

    } else if (isset($element['comment_id'])) {

      $user['user_comments'][] = $element;

    } else if (isset($element['like_id'])) {

      $user['user_likes'][] = $element;

    }

  }

如果需要,您稍后可以通過這種方式擴展它來處理不同的事件。


查看完整回答
反對 回復 2023-07-21
?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

我使用該comment_text鍵來過濾給定線程的評論和非評論,并將所有內容分組user_comments到主線程下。我使用array_map將此過濾器應用于列表中的每個線程。


$flatThreads = \\your initial value


$nestedThreads = array_map(function($thread){

  $notComments = array_filter($thread, function($thread_item){

    return !isset($thread_item["comment_text"]);

  });


  $comments = array_filter($thread, function($thread_item){

    return isset($thread_item["comment_text"]);

  });


  $mainItem = reset($notComments); //get first item that is not a comment

  $mainItem["user_comments"] = $comments;

  return $mainItem;

  

}, $flatThreads);


var_dump($nestedThreads); //what you requested


查看完整回答
反對 回復 2023-07-21
  • 2 回答
  • 0 關注
  • 169 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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