php - 希望获得用于视频 ID 的通用标签(逗号分隔)
问题描述
这是我从请求中得到的数组。
$allTags = [
0 => [
"name" => "TAG-ONE",
"video" => "64070,64076,64110,64111",
],
1 => [
"name" => "TAG-TWO",
"video" => "64070,64076,64110,64111",
],
2 => [
"name" => "TAG-THREE",
"video" => "64111",
]
];
我想获取用于所有视频 id 的通用标签名称,它们以逗号分隔。
预期产出
$allTagsResult = [
0 => [
"name" => "TAG-ONE,TAG-TWO",
"video" => "64070",
],
1 => [
"name" => "TAG-ONE,TAG-TWO",
"video" => "64076",
],
2 => [
"name" => "TAG-ONE,TAG-TWO",
"video" => "64110",
],
3 => [
"name" => "TAG-ONE,TAG-TWO,TAG-THREE",
"video" => "64111",
],
];
不知何故,我确实使用嵌套循环检查值,但我想知道你们是否可以建议任何最短的方法来获得预期的输出。
解决方案
如果您不喜欢循环,另一种方法:
$video_ids = array_flip(array_unique(explode(",",implode(",",array_column($allTags,'video')))));
$result = array_map(function($id){
return ['name' => '','video' => $id];
},array_flip($video_ids));
array_walk($allTags,function($tag_data) use (&$result,&$video_ids){
$ids = explode(",",$tag_data['video']);
foreach($ids as $id) $result[$video_ids[$id]]['name'] = empty($result[$video_ids[$id]]['name']) ? $tag_data['name'] : $result[$video_ids[$id]]['name'] . "," . $tag_data['name'];
});
推荐阅读
- r - ggplot2:将对数 stat_smooth 拟合到 geom_ribbon
- c# - C# Sqlite EntityFramework - 一步创建表和加载数据
- c# - c#中只读关键字/表达式主体成员之间的区别?,哪个更好?
- android - 如何将片段添加到 recyclerView 项目
- excel - 在数字前面插入一个 0“零”以指定数字序列
- c# - 需要一种通过其可执行路径获取进程的最佳方法
- javascript - JavaScript:从表单中获取价值
- android - 类似于 HelloAR 示例的 Sceneform 平面渲染
- angular - 在 HTTP 调用中未找到表单数据
- android - 无法停止 Firebase JobDispatcher 服务