首页 / PHP / 如何在PHP中将多维数组过滤到另一个?
如何在PHP中将多维数组过滤到另一个?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在PHP中将多维数组过滤到另一个?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1541字,纯文字阅读大概需要3分钟。
内容图文
![如何在PHP中将多维数组过滤到另一个?](/upload/InfoBanner/zyjiaocheng/782/3dea4d84a3a441b28323b02cc2e3394a.jpg)
可能这个问题是重复的,因为我不知道如何描述问题来找到答案.
我有一个包含3个参数的数组:日期,事件和标签.
>日期包含unix时间戳,
>事件是包含事件ID的arrya,
> Tags是一个包含事件标签的数组(如果数字不是单独的,则以逗号分隔的字符串).
这是数组:
Array
(
[date] => 1554328800
[events] => Array
(
[0] => 130
[1] => 131
[2] => 163
)
[tags] => Array
(
[0] => 4
[1] => "1,3,4"
[2] => "1,3"
)
)
事件和标签之间的关系在键中,因此具有位置0的事件130具有标签4.
如您所见,有一些标签重复(事件130和131或131和163).
我怎么能得到一个只有这样重复事件的数组:
Array
(
[0] => Array
(
[date] => 1554328800
[events] => Array
(
[0] => 130
[1] => 131
)
[tags] => 4
)
[1] => Array
(
[date] => 1554328800
[events] => Array
(
[0] => 131
[1] => 163
)
[tags] => Array
(
[0] => 1
[1] => 3
)
)
)
解决方法:
我将如何做到这一点:
>列出每个标签的事件
这将提供几组事件,可以在下一步中使用
>列出上一步中发生的每组事件的标签
>从第2步生成结果
这是代码,也可以在3v4l.org运行:
// Sample input
$data = [
"date" => 1554328800,
"events" => [130, 131, 163],
"tags" => [4, "1,3,4", "1,3"]
];
// 1. List the events per individual tag
foreach($data["tags"] as $i => $val) {
$vals = explode(",", $val);
foreach($vals as $val) {
$eventsByTag[$val][] = $data["events"][$i];
}
}
// 2. List the tags per set of events
foreach($eventsByTag as $tag => $events) {
sort($events, SORT_NUMERIC);
$tagsByEvents[implode(",", $events)][] = $tag;
}
// 3. produce the result
foreach($tagsByEvents as $events => $tags) {
$events = explode(",", $events);
if (count($tags) == 1) $tags = $tags[0];
$result[] = [
"date" => $data["date"],
"events" => $events,
"tags" => $tags
];
}
print_r($result);
内容总结
以上是互联网集市为您收集整理的如何在PHP中将多维数组过滤到另一个?全部内容,希望文章能够帮你解决如何在PHP中将多维数组过滤到另一个?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。