在PHP中从顺序数组创建嵌套数组
我需要帮助排序在PHP数组。我收到的这些阵列如下所示:在PHP中从顺序数组创建嵌套数组,php,arrays,loops,multidimensional-array,foreach,Php,Arrays,Loops,Multidimensional Array,Foreach,我需要帮助排序在PHP数组。我收到的这些阵列如下所示: Array ( [0] => Array ( [0] => Array ( [id] => 1 [username] => STLUserFolks [event_id] => 7e0a2faa-43c8-4552-b0ec-c4d0fa6c00d1 [event_on] => 2020
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] =>
[\"images/events/STLUserFolks/IMG_2135.JPEG\",\"images/events/STLUserFolks/IMG_2136.JPEG\",\"images/events/STLUserFolks/IMG_2137.JPEG\",\"images/events/STLUserFolks/IMG_2140.JPEG\"]
[amount] => 25
[event_title] => New Pants
[event_type] => photos
[event_details] => Do these jeans make me look big?
)
[1] => Array (
[id] => 1
[user_id] => 1
[username] => STLUserFolks
[member_user] => Some.Guy
[comment_text] => Wish I was there!
[created_on] => 2020-07-10 10:45:42.809338
[comment_id] => 19115a3e-87ca-410c-aade-c47122068bca
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
)
[2] => Array (
[id] => 1
[user_id] => 2
[username] => STLUserFolks
[member_user] => spiffy_user
[comment_text] => Looks like an amazing time.
[created_on] => 2020-07-10 15:09:05.275935
[comment_id] => bfd4d4e3-1c88-4f03-936f-cd456dba6096
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
)
)
)
我需要能够遍历这些数组,以便将注释数组([1]及以上)应用于主数组[0]。
或者我需要[0]之后的顺序数组按如下方式嵌套:
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.
[user_comment] => 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] =>
[\"images/events/STLUserFolks/IMG_2135.JPEG\",\"images/events/STLUserFolks/IMG_2136.JPEG\",\"images/events/STLUserFolks/IMG_2137.JPEG\",\"images/events/STLUserFolks/IMG_2140.JPEG\"]
[amount] => 25
[event_title] => New Pants
[event_type] => photos
[event_details] => Do these jeans make me look big?
[user_comments] => array (
array (
[id] => 1
[user_id] => 1
[username] => STLUserFolks
[member_user] => Some.Guy
[comment_text] => Wish I was there!
[created_on] => 2020-07-10 10:45:42.809338
[comment_id] => 19115a3e-87ca-410c-aade-c47122068bca
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
)
array (
[id] => 1
[user_id] => 2
[username] => STLUserFolks
[member_user] => spiffy_user
[comment_text] => Looks like an amazing time.
[created_on] => 2020-07-10 15:09:05.275935
[comment_id] => bfd4d4e3-1c88-4f03-936f-cd456dba6096
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
)
)
)
)
)
这件事我已经睡了半个晚上了。任何帮助都将不胜感激。谢谢
@blahy-如果我想添加另一个嵌套数组,比如:
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!
[user_comments] => Array (
)
[user_likes] => Array (
[like] => 0
[not_like] => 1
[event_id] => 7e0a2faa-43c8-4552-b0ec-c4d0fa6c00d1
[like_id] => 40
)
)
)
[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.
[user_comment] => array (
[0] => 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
)
)
[user_likes] => Array (
[0] => Array (
[like] => 5
[not_like] => 0
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
[like_id] => 42
)
)
)
)
[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] =>
[\"images/events/STLUserFolks/IMG_2135.JPEG\",\"images/events/STLUserFolks/IMG_2136.JPEG\",\"images/events/STLUserFolks/IMG_2137.JPEG\",\"images/events/STLUserFolks/IMG_2140.JPEG\"]
[amount] => 25
[event_title] => New Pants
[event_type] => photos
[event_details] => Do these jeans make me look big?
[user_comments] =>
[0] => Array (
array (
[id] => 1
[user_id] => 1
[username] => STLUserFolks
[member_user] => Some.Guy
[comment_text] => Wish I was there!
[created_on] => 2020-07-10 10:45:42.809338
[comment_id] => 19115a3e-87ca-410c-aade-c47122068bca
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
)
array (
[id] => 1
[user_id] => 2
[username] => STLUserFolks
[member_user] => spiffy_user
[comment_text] => Looks like an amazing time.
[created_on] => 2020-07-10 15:09:05.275935
[comment_id] => bfd4d4e3-1c88-4f03-936f-cd456dba6096
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
)
)
[user_likes] => Array (
[0] => Array (
[like] => 2
[not_like] => 0
[event_id] => 3112f8ff-6119-48c4-810c-594585b5dc63
[like_id] => 42
)
)
)
)
)
假设您提供的输入数据位于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);
这就是你想要的吗
与预期结果唯一不同的是,每一行都有“user\u comments”数组,该数组可以为空,与此属性相比,缺少一个或多个元素,或者被称为user\u comment
或user\u comments
。我相信这是更一致的,更容易使用编程,但它也可以很容易地调整到您发布的内容,如果需要的话
编辑关于评论之类的内容。
如果要同时填写用户注释和用户喜好,则必须检测某些数据是否为注释或喜好。我是这样做的:如果数据包含comment\u id,它就是一个comment,如果它有like\u id,它就是like。
这是一个简单的编辑附在下面。片段变成:
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;
}
}
以后,如果需要,您可以通过这种方式扩展它来处理不同的事件。我使用
注释_text
键在给定线程的注释和非注释之间进行筛选,并将所有用户注释
分组到主线程下。我使用array\u 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
我在末尾添加了单独的部分。这应该是你需要的。
$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